WebMagic 爬蟲框架學習

2021-07-05 19:53:20 字數 1689 閱讀 2193

而spider則將這幾個元件組織起來,讓它們可以互相互動,流程化的執行,可以認為spider是乙個大的容器,它也是webmagic邏輯的核心。

webmagic總體架構圖如下:

1.**********

2.pageprocessor

pageprocessor負責解析頁面,抽取有用資訊,以及發現新的鏈結。webmagic使用jsoup作為html解析工具,並基於其開發了解析xpath的工具xsoup。

在這四個元件中,pageprocessor對於每個站點每個頁面都不一樣,是需要使用者定製的部分。

3.scheduler

scheduler負責管理待抓取的url,以及一些去重的工作。webmagic預設提供了jdk的記憶體佇列來管理url,並用集合來進行去重。也支援使用redis進行分布式管理。

除非專案有一些特殊的分布式需求,否則無需自己定製scheduler。

4.pipeline

pipeline負責抽取結果的處理,包括計算、持久化到檔案、資料庫等。webmagic預設提供了「輸出到控制台」和「儲存到檔案」兩種結果處理方案。

pipeline定義了結果儲存的方式,如果你要儲存到指定資料庫,則需要編寫對應的pipeline。對於一類需求一般只需編寫乙個pipeline

1. request

request是對url位址的一層封裝,乙個request對應乙個url位址。

它是pageprocessor與**********互動的載體,也是pageprocessor控制**********唯一方式。

除了url本身外,它還包含乙個key-value結構的字段extra。你可以在extra中儲存一些特殊的屬性,然後在其他地方讀取,以完成不同的功能。例如附加上乙個頁面的一些資訊等。

2. page

page是webmagic抽取過程的核心物件,它提供一些方法可供抽取、結果儲存等。在第四章的例子中,我們會詳細介紹它的使用。

3. reusltitems

reusltitems相當於乙個map,它儲存pageprocessor處理的結果,供pipeline使用。它的api與map很類似,值得注意的是它有乙個字段skip,若設定為true,則不應被pipeline處理。

spider是webmagic內部流程的核心。**********、pageprocessor、scheduler、pipeline都是spider的乙個屬性,這些屬性是可以自由設定的,通過設定這個屬性可以實現不同的功能。spider也是webmagic操作的入口,它封裝了爬蟲的建立、啟動、停止、多執行緒等功能。下面是乙個設定各個元件,並且設定多執行緒和啟動的例子。詳細的spider設定請看第四章——爬蟲的配置、啟動和終止。

public

static

void

main(string args)

上面介紹了很多元件,但是其實使用者需要關心的沒有那麼多,因為大部分模組webmagic已經提供了預設實現。

一般來說,對於編寫乙個爬蟲,pageprocessor是需要編寫的部分,而spider則是建立和控制爬蟲的入口。在第四章中,我們會介紹如何通過定製pageprocessr來編寫乙個爬蟲,並通過spider來啟動。

基於webmagic爬蟲框架的專案記錄

1 為什麼選定了webmagic?剛開始做的時候採用的是 httpclient htmlparser dom4j,主要說下為什麼使用了dom4j,現在的webmagic也是採用了dom4j,這裡主要是需要解析乙個 這個 的位址比較特殊,翻頁位址一次性儲存到了js方法裡,普通的html節點無法獲取到,...

基於webmagic框架的多主題爬蟲關鍵詞切換

eg 我們需要爬取同程旅遊網杭州的旅遊景點資訊,url是 eg 同程旅遊網從杭州到北京的國內遊,url是 第三頁是 浙江 消防 pn 10 浙江 消防 pn 20 兩種方式的配置舉例如下 filters searchfilter kwfixvalue 浙江,江蘇,上海,北京,天津 kwvalue 火...

使用webmagic進行爬蟲練習

搜尋引擎是基於爬蟲的。還有其他小的應用也是基於爬蟲的,比如今日頭條,最開始是從各個新聞 上蒐集新聞,蒐集後重新定位 排序 推送使用者。還有天眼查 企查查 啟信寶 是工信部開源的資料,也是爬蟲獲得的。還有自動搶票的軟體,也是通過爬蟲實現模擬登陸和搶票操作。1.首先整個網頁都抓取下來 2.分析網頁的結構...