Scrapy框架 settings.py文件中常用的配置值

😃

Scrapy設定(settings)提供了定製Scrapy組件的方法。

你可以控制包括核心(core),插件(extension),pipeline及spider組件。

設定爲代碼提供了提取以key-value映射的配置值的的全局命名空間(namespace)。


主要記錄一下常用的幾個內置的配置文件,以便以後好查詢。標記重要的,那一定很重要


  • ROBOTSTXT_OBEY = True重要

    是否遵守機器人協議,默認是True,開始爬蟲的時候,記得改成 False

  • CONCURRENT_ITEMS

    Item Processor(即 Item Pipeline) 同時處理(每個response的)item的最大值。默認是 100,剛創建的項目中,settings文件是沒有的。

    如需使用,在settings文件中加上即可

  • CONCURRENT_REQUESTS

    Scrapy downloader 併發請求(concurrent requests)的最大值。默認是 16

  • CONCURRENT_REQUESTS_PER_DOMAIN

    對單個網站進行併發請求的最大值。 默認值是 16

  • CONCURRENT_REQUESTS_PER_IP

    能夠被單個IP處理的併發請求數,默認值0,代表無限制,需要注意,如果不爲零,那CONCURRENT_REQUESTS_PER_DOMAIN將被忽略,即併發數的限制是按照每個IP來計算,而不是每個域名

  • DOWNLOAD_DELAY重要

    如果沒有開啓智能限速,這個值就代表一個規定死的值,代表對同一網址延遲請求的秒數。一般是防止IP被封的有效手段之一。對了,默認值是 0

  • DOWNLOAD_TIMEOUT重要

    下載器超時時間(單位: 秒)。默認值180秒,時間也太特麼的長了,當時使用IP代理池,忘記重設超時時間,導致爬取效率極低。所以,一定要記得設置超時時間,一般設置5到10秒。

  • COOKIES_ENABLED重要

    是否支持cookie,cookiejar進行操作cookie,默認開啓,對於某些網站,需要開啓cookie才能爬取,有些需要關閉。需要具體分析。

  • DEFAULT_REQUEST_HEADERS

    Scrapy HTTP Request使用的默認header。由 DefaultHeadersMiddleware 產生。可以用來修改UA,不過我很少在這裏修改。

  • USER_AGENT重要

    客戶端User-Agent請求頭,一定要記得改,默認的請求頭是個什麼玩意。

  • 兩個中間件,一個是 DOWNLOADER_MIDDLEWARES,另一個是 SPIDER_MIDDLEWARES

    關於DOWNLOADER_MIDDLEWARES 的用法可以參考我的另一篇博客 點這

    爲什麼我只說了下載器中間件?因爲我TMD至今還沒使用過爬蟲中間件

    你可以在這裏添加你自己定義的中間件,也可以禁用scrapy內置的中間件。

  • ITEM_PIPELINES重要

    保存項目中啓用的pipeline及其順序的字典。該字典默認爲空,值(value)任意。 不過值(value)習慣設定在0-1000範圍內。自己寫的PIPELINE一定要記得添加進去噢

  • 關於日誌的常用配置

    • LOG_ENABLED 也就是要不要開啓日誌的意思, 默認是True
    • LOG_ENCODING 日誌的編碼,默認是 utf-8
    • LOG_FILE 日誌的文件,默認是None,也就是輸出到控制檯
    • LOG_LEVEL 日誌的級別。默認是 DEBUG,可選的級別有: CRITICAL、 ERROR、WARNING、INFO、DEBUG。DEBUG爲最低級別,日誌輸出DEBUG及以上級別的信息
  • REDIRECT_ENABLEDREDIRECT_MAX_TIMES (重要)

    是否啓用Redirect中間件,及其單個請求將遵循的最大重定向數。默認是啓動中間件,單個請求最大的重定向數,默認爲20

  • HTTPERROR_ALLOWED_CODES

    允許處理的狀態碼,一般用來處理301 302這類的狀態碼

  • 當然,你也可以在settings中任意寫入各種配置,如數據庫的。看自己的需求


以下,針對分佈式爬蟲 scrapy-redis的配置

1. 確保request存儲到redis中

SCHEDULER = "scrapy_redis.scheduler.Scheduler"

2. 確保所有爬蟲共享相同的去重指紋

DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter"

3. 在redis中保持 scrapy-redis用到的隊列,不會清理redis中的隊列,從而可以實現暫停和恢復的功能

SCHEDULER_PERSIST = True

4. 設置 連接redis信息

REDIS_HOST = ‘192.168.43.115’
REDIS_PORT = 6379
REDIS_PARAMS = {‘password’: ‘xxx’}


未完待續…

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章