GuozhongCrawler系列教程 (2) CrawTaskBuilder詳解,zhongguozhongtie

來源:互聯網
上載者:User

GuozhongCrawler系列教程 (2) CrawTaskBuilder詳解,zhongguozhongtie

     GuozhongCrawler是分層架構。要快速學習CrawlTask獨立的配置多少要瞭解架構的原始碼。所以CrawTaskBuilder提供要更加扁平且易於理解的的方式建立CrawTask


方法詳細資料
  • useThread
    public CrawTaskBuilder useThread(int threadNum)
    設定CrawlTask下載處理Request的線程數量
    參數:
    threadNum -
    返回:
    CrawTaskBuilder
  • usePipeline
    public CrawTaskBuilder usePipeline(java.lang.Class<? extends Pipeline> pipelineCls)
    設定實現好的Pipeline類Class
    參數:
    pipelineCls - 持久化處理類
    返回:
    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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.