(2)scrapy中的settings

settings概述

我們?cè)谑褂胹crapy的時(shí)候,經(jīng)常需要設(shè)置或者修改一些參數(shù),而scrapy的參數(shù)共分為5個(gè)級(jí)別,具體如下:

  1. scrapy默認(rèn)參數(shù)
  2. 每個(gè)命令的默認(rèn)參數(shù)
  3. 項(xiàng)目settings模塊
  4. 單獨(dú)爬蟲(chóng)參數(shù)設(shè)置
  5. 命令行選項(xiàng)

優(yōu)先級(jí)從1-5逐漸上升,也就是4中設(shè)置的參數(shù),會(huì)覆蓋掉3中設(shè)置的參數(shù),原理就是python中字典dict的update。

3(項(xiàng)目settings模塊)就是我們最常使用的settings模塊,通常作為全局通用設(shè)置。

有時(shí)候我們一個(gè)項(xiàng)目會(huì)有多個(gè)spider,而每個(gè)spider需要設(shè)置的參數(shù)并不一樣,比如spider1需要使用pipeline1將數(shù)據(jù)存入到mysql中,而spider2使用pipeline2將數(shù)據(jù)存入redis中,因此我們要對(duì)兩個(gè)spider分開(kāi)進(jìn)行pipeline配置,可在spider中添加custom_settings字典,將參數(shù)寫(xiě)入其中即可,如下(命令行選項(xiàng)同理):

class MySpider(scrapy.Spider):
    name = 'spider1'

    custom_settings = {
        'ITEM_PIPELINES': {'myproject.pipelines.pipeline1': 301},
    }
class MySpider(scrapy.Spider):
    name = 'spider2'

    custom_settings = {
        'ITEM_PIPELINES': {'myproject.pipelines.pipeline2': 301},
    }

常用的settings參數(shù)

CONCURRENT_REQUESTS = 16                 # 全局最大并發(fā)數(shù)
CONCURRENT_REQUESTS_PER_DOMAIN = 8       # 單個(gè)域名最大并發(fā)數(shù),如果下一個(gè)參數(shù)設(shè)置非0,此參數(shù)無(wú)效
CONCURRENT_REQUESTS_PER_IP = 0           # 單個(gè)ip最大并發(fā)數(shù)

COOKIES_ENABLED = True                   # 默認(rèn)啟用cookie,無(wú)需登錄時(shí)一般將其關(guān)閉
 
DEFAULT_REQUEST_HEADERS = {              # 設(shè)置默認(rèn)請(qǐng)求頭
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
    'Accept-Language': 'en',
}
 
DOWNLOAD_DELAY = 0                       # 下載延時(shí),高并發(fā)采集時(shí)設(shè)為0
DOWNLOAD_TIMEOUT = 180                   # 超時(shí)時(shí)間設(shè)置,一般設(shè)置在10-30之間

LOG_ENABLED = True                       # 啟用日志
LOG_STDOUT = False                       # 將進(jìn)程所有的標(biāo)準(zhǔn)輸出(及錯(cuò)誤)重定向到log中,默認(rèn)False。如果開(kāi)啟,在項(xiàng)目中的print方法也會(huì)以log的形式輸出
LOG_LEVEL = 'DEBUG'                      # 日志輸出級(jí)別,上線后至少使用info級(jí)別
LOG_FILE = None                          # 將日志輸出到文件中

LOGSTATS_INTERVAL = 60.0                 # 吞吐量輸出間隔,就是輸出每分鐘下載多少個(gè)頁(yè)面、捕獲多少個(gè)item的那個(gè),默認(rèn)每分鐘輸出一次,自主配置

REDIRECT_ENABLED = True                  # 默認(rèn)開(kāi)啟頁(yè)面跳轉(zhuǎn),一般選擇關(guān)閉

RETRY_ENABLED = True                     # 默認(rèn)開(kāi)啟失敗重試,一般關(guān)閉
RETRY_TIMES = 2                          # 失敗后重試次數(shù),默認(rèn)兩次
RETRY_HTTP_CODES = [500, 502, 503, 504, 522, 524, 408]    # 碰到這些驗(yàn)證碼,才開(kāi)啟重試

ROBOTSTXT_OBEY = False                   # 遵守網(wǎng)站robot協(xié)議,一般是不遵守的···········

DOWNLOADER_MIDDLEWARES = {               # 下載中間件
   'myproject.middlewares.MyDownloaderMiddleware': 543,
}

ITEM_PIPELINES = {                       # 數(shù)據(jù)處理、存儲(chǔ)pipeline
   'myproject.pipelines.MyPipeline': 300,
}


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容