如何提升scrapy爬取資料的效率

Bound_w發表於2019-03-05

在配置檔案中修改相關引數:

  • 增加併發
    • 預設的scrapy開啟的併發執行緒為32個,可以適當的進行增加,再配置檔案中修改CONCURRENT_REQUESTS = 100值為100,併發設定成了為100。
  • 降低日誌等級
    • 在scrapy執行的時候,會輸出大量的日誌資訊,為了減少cpu的使用率,可以設定log輸出資訊為INFO或者ERROR.在配置檔案中編寫LOG_LEVEL = 'INFO'
  • 禁止cookie
    • 如果不是真的需要cookie,則在scrapy爬取資料的時候可以 禁止cookie從而減少CPU的使用率,提升爬蟲效率,在配置檔案中編寫COOKIES_ENABLED= False
  • 禁止重試
    • 對失敗的HTTP請求進行重新請求(重試),會減慢爬取速度。因此可以禁止重試,在配置檔案中編寫:RETRY_ENABLED = False
  • 減少下載超時
    • 如果對一個非常慢的連結進行爬取,減少下載超時可以讓卡住的連結被快速放棄,從而提升爬取的效率。在配置檔案中進行編寫:DOWNLOAD_TIMEOUT = 10 超時時間為10s

【補充】:

請求傳參的的應用場景:

  解析的資料不在同一個頁面中

  Request(callback,meta={})

下載中介軟體的用途:

  批量攔截請求(代理IP和UA)和響應(處理頁面資料)

如何在scrapy使用selenium
  1.在spider的init方法中例項化一個瀏覽器物件
  2.在spider的closed方法中關閉瀏覽器物件
  3.在下載中介軟體類的process_response方法中接收spider中的瀏覽器物件
  4.處理執行相關自動化操作(發起請求,獲取頁面資料)
  5.例項化一個新的響應物件(from scrapy.http import HtmlResponse),且將頁面資料儲存到該物件中
  6.返回新的響應物件
  7.在配置檔案中開啟中介軟體

相關文章