GuozhongCrawler系列教程 (2) CrawTaskBuilder詳解

    GuozhongCrawler是分層架構。要快速學習CrawlTask獨立的配置多少要了解框架的源代碼。因此CrawTaskBuilder提供要更加扁平且易於理解的的方式建立CrawTaskjava



方法詳細資料

  • useThread

    public CrawTaskBuilder useThread(int threadNum)

    設置CrawlTask下載處理Request的線程數量web

    • 參數:chrome

    • threadNum -cookie

    • 返回:網絡

    • CrawTaskBuilder架構

  • usePipeline

    public CrawTaskBuilder usePipeline(java.lang.Class<? extends Pipeline> pipelineCls)

    設置實現好的Pipeline類Class框架

    • 參數:學習

    • pipelineCls - 持久化處理類網站

    • 返回:ui

    • CrawTaskBuilder

  • usePageRetryCount

    public CrawTaskBuilder usePageRetryCount(int retryCount)

    若是因爲網絡問題,請求url時可能會出現失敗的狀況。那麼你設置最大從新請求的次數默認從新請求1次

    • 參數:

    • retryCount -

    • 返回:

    • CrawTaskBuilder

  • usePageEncoding

    public CrawTaskBuilder usePageEncoding(PageRequest.PageEncoding defaultEncoding)

    通常抓取某個網站會有統一的編碼,若是你不想每次都調用PageRequest.setPageEncoding的話,那麼你能夠設置一個默認的編碼

    • 返回:


  • injectStartUrl

    public CrawTaskBuilder injectStartUrl(java.lang.String url,
                                 java.lang.Class<? extends PageProcessor> processorCls,
                                 java.util.Map<java.lang.String,java.lang.Object> contextAttribute,                             PageRequest.PageEncoding pageEncoding)

    添加種子URL設置附加參數和頁面編碼格式 每一個injectStartUrl方法注入的種子URL會用一個單獨的StatContext包裝。若是StatContext在抓取過程當中不會產生較多新的跟進Request 那麼推薦你使用useDynamicEntrance設置入口URL將會更加提高效率

    • 參數:

    • url -

    • contextAttribute -

    • PageEncoding -

    • 返回:


  • injectStartUrl

    public CrawTaskBuilder injectStartUrl(java.lang.String url,
                                 java.lang.Class<? extends PageProcessor> processorCls,
                                 java.util.Map<java.lang.String,java.lang.Object> contextAttribute)

    添加種子URL並設置附加參數 每一個injectStartUrl方法注入的種子URL會用一個單獨的StatContext包裝。若是StatContext在抓取過程當中不會產生較多新的跟進Request 那麼推薦你使用useDynamicEntrance設置入口URL將會更加提高效率

    • 參數:

    • url -

    • contextAttribute -

    • 返回:


  • injectStartUrl

    public CrawTaskBuilder injectStartUrl(java.lang.String url,
                                 java.lang.Class<? extends PageProcessor> processorCls)

    添加種子URL,並指定PageProcessor。 每一個injectStartUrl方法注入的種子URL會用一個單獨的StatContext包裝。若是StatContext在抓取過程當中不會產生較多新的跟進Request 那麼推薦你使用useDynamicEntrance設置入口URL將會更加提高效率

    • 參數:

    • url -

    • 返回:


  • useDynamicEntrance

    public CrawTaskBuilder useDynamicEntrance(java.lang.Class<? extends DynamicEntrance> dynamicEntranceCls)

    若是你想在單個StartContext中直接初始化跟進URL,或者讓爬蟲分批註入種子的話。那麼DynamicEntrance提供了這樣的接口

    • 參數:

    • dynamicEntranceCls - DynamicEntrance的繼承實現類

    • 返回:


  • useQueuePriorityRequest

    public CrawTaskBuilder useQueuePriorityRequest()

    使用優先級隊列,在一些抓取分頁較多情景下推薦使用QueuePriorityRequest。由於 它能很好的保證優先級高的Request優先被處理。從而防止隊列金字塔式的膨脹

    • 返回:


  • useQueueDelayedPriorityRequest

    public CrawTaskBuilder useQueueDelayedPriorityRequest(int delayInMilliseconds)

    使用延遲優先級隊列,和QueuePriorityRequest相似。但QueueDelayedPriorityRequest額外提供了延遲抓取的功能 在一些由於請求頻率過快而被封的網站上推薦使用QueueDelayedPriorityRequest

    • 參數:

    • delayInMilliseconds - 每次取Request距離上次時間延遲delayInMilliseconds毫秒

    • 返回:


  • useTaskLifeListener

    public CrawTaskBuilder useTaskLifeListener(TaskLifeListener listener)

    設置監聽器,監聽爬蟲的CrawlTask的onStart 和 onFinish。在此你能夠發送郵件或者其餘方式來知曉爬蟲的執行狀況

    • 參數:

    • listener -

    • 返回:


  • useCookie

    public CrawTaskBuilder useCookie(java.util.Set<Cookie> cookies)

    設置Cookie,當Driver建立時設置cookies。在須要登陸狀況下你能夠將登陸好的Cookies注入downloader

    • 參數:

    • listener -

    • 返回:


  • addChromeDriverLifeListener

    public void addChromeDriverLifeListener(ChromeDriverLifeListener chromeDriverLifeListener)

    當你使用ChromeDownloader做爲下載器時能夠設置ChromeDriverLifeListener

    • 參數:

    • listener -

  • addWebDriverLifeListener

    public void addWebDriverLifeListener(WebDriverLifeListener webDriverLifeListener)

    當你使用WebDriverDownloader做爲下載器時能夠設置ChromeDriverLifeListener

    • 參數:

    • listener -

  • addHttpClientLifeListener

    public void addHttpClientLifeListener(HttpClientLifeListener httpClientLifeListener)

    當你使用默認的DefaultPageDownloader做爲下載器時能夠設置HttpClientLifeListener

    • 參數:

    • listener -

  • useProxyIpPool

    public CrawTaskBuilder useProxyIpPool(java.lang.Class<? extends ProxyIpPool> proxyIpPoolCls,
                                 int initSize,
                                 long pastTime,
                                 int max_use_count)

    使用代理IP切換機制時設置一個ProxyIpPool的實現類便可。在封IP網站下推薦使用收費版代理IP效果更佳

    • 參數:

    • proxyIpPoolCls -

    • initSize - 每次代理IP緩衝池IP不足時加載IP的個數,推薦使用公式initSize=thread*5

    • pastTime - 每一個IP自身的過時時間,當代理IP過時時間到的時候會被清除。這個值根據代理IP的質量決定

    • max_use_count - 每一個代理IP最多使用的次數。推薦使用公式max_use_count=(目標網站連續請求才被封的次數)減去  2到3

    • 返回:


  • useProxyIpPoolInstance

    public CrawTaskBuilder useProxyIpPoolInstance(ProxyIpPool proxyIpPool)

    固然你也能夠本身構造一個實例設置ProxyIpPool

    • 參數:

    • proxyIpPool -

    • 返回:


    • 拋出:

    • java.lang.SecurityException

    • java.lang.NoSuchMethodException

  • useTimer

    public final CrawTaskBuilder useTimer(int hour,
                           long period,
                           int endHour)

    使用定時循環啓動,使用24小時制

    • 參數:

    • hour - 從幾點開始啓動,若是當前時間小於改時間則等待到改時間啓動

    • period - 每次抓取時間間隔  單位毫秒

    • endHour - 到幾點結束

    • 返回:


  • useDownloadFileThread

    public CrawTaskBuilder useDownloadFileThread(int thread)

    設置同時下載文件的線程數 ,默認3個線程

    • 參數:

    • thread -

    • 返回:

    • CrawTaskBuilder

  • useDownloadFileDelayTime

    public CrawTaskBuilder useDownloadFileDelayTime(int millisecond)

    文件下載延遲,默認300ms

    • 參數:

    • millisecond -

    • 返回:


  • build

    public CrawlTask build()

    配置完成,便可建立CrawlTask

    • 返回:

    • CrawlTask

相關文章
相關標籤/搜索