摘要:主要用于選擇器抽象類,實(shí)現(xiàn)類前面說的兩個接口,主要用于選擇器繼承。多個選擇的情形,每個選擇器各自獨(dú)立選擇,將所有結(jié)果合并。抽象類,定義了一些模板方法。這部分源碼就不做分析了。這里需要提到的一點(diǎn)是返回的不支持選擇,返回的對象支持選擇。
1、Selector部分:
接口:
Selector:定義了根據(jù)字符串選擇單個元素和選擇多個元素的方法。
ElementSelector:定義了根據(jù)jsoup element選擇單個、多個元素的方法。主要用于CSS、Xpath選擇器.
抽象類:
BaseElementSelector,實(shí)現(xiàn)類前面說的兩個接口,主要用于CSS、Xpath選擇器繼承。模板化接口方法,并定義了一些選擇元素的方法由子類實(shí)現(xiàn)。
實(shí)現(xiàn)類:
CssSelector:Css選擇器的實(shí)現(xiàn)類,繼承BaseElementSelector。基本實(shí)現(xiàn)都是基于jsoup的css選擇接口。
XpathSelector:xpath選擇器的實(shí)現(xiàn)類,繼承BaseElementSelector。基本實(shí)現(xiàn)都是采用作者自己基于jsoup實(shí)現(xiàn)的xsoup的相關(guān)接口。
RegexSelector:正則表達(dá)式選擇器的實(shí)現(xiàn)類,僅實(shí)現(xiàn)了Selector接口。
JsonPathSelector:基于jayway/JsonPath path選擇器。
ReplaceSelector:基于正則替換的選擇器
SmartContentSelector:咱不明白其用途,被官方打上了實(shí)驗(yàn)性標(biāo)記。
OrSelector:多個選擇的情形,每個選擇器各自獨(dú)立選擇,將所有結(jié)果合并。
AndSelector:多個選擇的情形,流式管道選擇,前一個選擇的結(jié)果作為后一個選擇的輸入。
2、Selectable部分
接口:Selectable :定義了一系列鏈?zhǔn)絘pi調(diào)用方式,支持xpath,css,regex,jsonPath選擇器,以及一些便利方法,如links獲取該選擇器下的全部鏈接。
抽象類:AbstractSelectable,定義了一些模板方法。
實(shí)現(xiàn)類HtmlNode、PlainText、Html(繼承自HtmlNode)、Json(繼承自PlainText)等。
這部分源碼就不做分析了。
這里需要提到的一點(diǎn)是:
Page.getHtml()返回的Html不支持JsonPath選擇,Page.getJson()返回的Json對象支持JsonPath選擇。
選擇器部分到此結(jié)束吧。
下篇主題待定。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/66878.html
摘要:爬蟲框架源碼分析之爬蟲框架源碼分析之爬蟲框架源碼分析之爬蟲框架源碼分析之爬蟲框架源碼分析之之進(jìn)階 爬蟲框架Webmagic源碼分析之Spider爬蟲框架WebMagic源碼分析之Scheduler爬蟲框架WebMagic源碼分析之Downloader爬蟲框架WebMagic源碼分析之Selector爬蟲框架WebMagic源碼分析之SeleniumWebMagic之Spider進(jìn)階
摘要:有一個模塊其中實(shí)現(xiàn)了一個。但是感覺靈活性不大。接口如下它會獲得一個實(shí)例,你可以在里面進(jìn)行任意的操作。本部分到此結(jié)束。 webmagic有一個selenium模塊,其中實(shí)現(xiàn)了一個SeleniumDownloader。但是感覺靈活性不大。所以我就自己參考實(shí)現(xiàn)了一個。 首先是WebDriverPool用來管理WebDriver池: import java.util.ArrayList; im...
摘要:獲取正在運(yùn)行的線程數(shù),用于狀態(tài)監(jiān)控。之后初始化組件主要是初始化線程池將到中,初始化開始時間等。如果線程池中運(yùn)行線程數(shù)量為,并且默認(rèn),那么就停止退出,結(jié)束爬蟲。 本系列文章,針對Webmagic 0.6.1版本 一個普通爬蟲啟動代碼 public static void main(String[] args) { Spider.create(new GithubRepoPageP...
摘要:包主要實(shí)現(xiàn)類,這是一個抽象類,實(shí)現(xiàn)了通用的模板方法,并在方法內(nèi)部判斷錯誤重試去重處理等。重置重復(fù)檢查就是清空,獲取請求總數(shù)也就是獲取的。至于請求總數(shù)統(tǒng)計,就是返回中維護(hù)的的大小。 Scheduler是Webmagic中的url調(diào)度器,負(fù)責(zé)從Spider處理收集(push)需要抓取的url(Page的targetRequests)、并poll出將要被處理的url給Spider,同時還負(fù)責(zé)...
摘要:優(yōu)雅的使用框架,爬取唐詩別苑網(wǎng)的詩人詩歌數(shù)據(jù)同時在幾種動態(tài)加載技術(shù)中對比作選擇雖然差不多兩年沒有維護(hù),但其本身是一個優(yōu)秀的爬蟲框架的實(shí)現(xiàn),源碼中有很多值得參考的地方,特別是對爬蟲多線程的控制。 優(yōu)雅的使用WebMagic框架,爬取唐詩別苑網(wǎng)的詩人詩歌數(shù)據(jù) 同時在幾種動態(tài)加載技術(shù)(HtmlUnit、PhantomJS、Selenium、JavaScriptEngine)中對比作選擇 We...
閱讀 992·2023-04-25 14:20
閱讀 1868·2021-11-24 10:20
閱讀 3765·2021-11-11 16:55
閱讀 2905·2021-10-14 09:42
閱讀 3466·2019-08-30 15:56
閱讀 1144·2019-08-30 15:55
閱讀 1063·2019-08-30 15:44
閱讀 771·2019-08-29 11:28