新聞、部落格爬取是資料採集中常見的需求,也是最容易實現的需求。一些開發者利用httpclient和jsoup等工具也可以實現這個需求,但大多數實現的是乙個單執行緒爬蟲,並且在url去重和斷點爬取這些功能上控制地不好,爬蟲框架可以很好地解決這些問題,開源爬蟲框架往往都自帶穩定的執行緒池、url去重機制和斷點續爬功能。
爬蟲框架往往也會自帶網頁解析功能,支援xpath或css選擇器(底層多用jsoup實現)。
使用爬蟲框架,使用者只需要告訴框架大致的爬取範圍,以及每個頁面的抽取規則,即可完成對網頁的爬取,並抽取其中的結構化資料。
import cn.edu.hfut.dmic.webcollector.model.crawldatums;
import cn.edu.hfut.dmic.webcollector.model.page;
import cn.edu.hfut.dmic.webcollector.plugin.berkeley.breadthcrawler;
public
class
tutorialcrawler
extends
breadthcrawler
/*可以往next中新增希望後續爬取的任務,任務可以是url或者crawldatum
爬蟲不會重複爬取任務,從2.20版之後,爬蟲根據crawldatum的key去重,而不是url
因此如果希望重複爬取某個url,只要將crawldatum的key設定為乙個歷史中不存在的值即可
例如增量爬取,可以使用 爬取時間+url作為key。
新版本中,可以直接通過 page.select(css選擇器)方法來抽取網頁中的資訊,等價於
page.getdoc().select(css選擇器)方法,page.getdoc()獲取到的是jsoup中的
document物件,細節請參考jsoup教程
*/@override
public
void
visit(page page, crawldatums next)
}public
static
void
main(string args) throws exception
}
上面的例子將結構化資料輸出到標準輸出流,在實際中,結構化資料應該被輸出到mysql等儲存中,可以參考教程:使用spring jdbc持久化webcollector爬取的資料。
維護webcollector及教程需要花費較大的時間和精力,如果你喜歡webcollector的話,歡迎通過捐款的方式,支援開發者的工作,非常感謝!
Python爬取小說 2 單章節爬取
coding utf 8 urlopen 開啟 request 請求 from urllib.request import urlopen,request 匯入gzip包 解壓gzip 封裝請求 req request url path,headers headers 開啟鏈結 conn urlop...
python動態爬取知乎 python爬取微博動態
在初學爬蟲的過程中,我們會發現很多 都使用ajax技術動態載入資料,和常規的 不一樣,資料是動態載入的,如果我們使用常規的方法爬取網頁,得到的只是一堆html 沒有任何的資料。比如微博就是如此,我們可以通過下滑來獲取更多的動態。對於這樣的網頁該如何抓取呢?我們以微博使用者動態為例,抓取某名使用者的文...
c 爬蟲爬取商品資訊
在乙個小專案中,需要用到京東的所有商品id,因此就用c 寫了個簡單的爬蟲。在解析html中沒有使用正規表示式,而是借助開源專案htmlagilitypack解析html。public static string downloadhtml string url,encoding encode catc...