Scrapy - 設定



描述

可以使用 Scrapy 設定修改 Scrapy 元件的行為。如果您有多個 Scrapy 專案,設定還可以選擇當前活動的 Scrapy 專案。

指定設定

抓取網站時,必須通知 Scrapy 您正在使用哪個設定。為此,應使用環境變數 `SCRAPY_SETTINGS_MODULE`,其值應為 Python 路徑語法。

填充設定

下表顯示了您可以用來填充設定的一些機制:

序號 機制 & 描述
1

命令列選項

此處,傳遞的引數優先順序最高,會覆蓋其他選項。`-s` 用於覆蓋一個或多個設定。

scrapy crawl myspider -s LOG_FILE = scrapy.log
2

每個爬蟲的設定

爬蟲可以使用屬性 `custom_settings` 來擁有自己的設定,這些設定會覆蓋專案的設定。

class DemoSpider(scrapy.Spider): 
   name = 'demo'  
   custom_settings = { 
      'SOME_SETTING': 'some value', 
   }
3

專案設定模組

在這裡,您可以填充自定義設定,例如在 `settings.py` 檔案中新增或修改設定。

4

每個命令的預設設定

每個 Scrapy 工具命令都在 `default_settings` 屬性中定義了自己的設定,以覆蓋全域性預設設定。

5

全域性預設設定

這些設定位於 `scrapy.settings.default_settings` 模組中。

訪問設定

它們可以透過 `self.settings` 獲取,並在爬蟲初始化後設置在基類爬蟲中。

以下示例演示了這一點。

class DemoSpider(scrapy.Spider): 
   name = 'demo' 
   start_urls = ['http://example.com']  
   def parse(self, response): 
      print("Existing settings: %s" % self.settings.attributes.keys()) 

要在初始化爬蟲之前使用設定,必須在爬蟲的 `__init__()` 方法中覆蓋 `from_crawler` 方法。您可以透過傳遞給 `from_crawler` 方法的屬性 `scrapy.crawler.Crawler.settings` 來訪問設定。

以下示例演示了這一點。

class MyExtension(object): 
   def __init__(self, log_is_enabled = False): 
      if log_is_enabled: 
         print("Enabled log") 
         @classmethod 
   def from_crawler(cls, crawler): 
      settings = crawler.settings 
      return cls(settings.getbool('LOG_ENABLED')) 

設定名稱的理由

設定名稱作為字首新增到它們配置的元件。例如,對於 robots.txt 擴充套件,設定名稱可以是 `ROBOTSTXT_ENABLED`、`ROBOTSTXT_OBEY`、`ROBOTSTXT_CACHEDIR` 等。

內建設定參考

下表顯示了 Scrapy 的內建設定:

序號 設定 & 描述
1

AWS_ACCESS_KEY_ID

用於訪問 Amazon Web Services。

預設值:None

2

AWS_SECRET_ACCESS_KEY

用於訪問 Amazon Web Services。

預設值:None

3

BOT_NAME

機器人名稱,用於構建 User-Agent。

預設值:'scrapybot'

4

CONCURRENT_ITEMS

專案處理器中同時處理的專案的最大數量。

預設值:100

5

CONCURRENT_REQUESTS

Scrapy 下載器同時執行的請求的最大數量。

預設值:16

6

CONCURRENT_REQUESTS_PER_DOMAIN

對任何單個域同時執行的請求的最大數量。

預設值:8

7

CONCURRENT_REQUESTS_PER_IP

對任何單個 IP 同時執行的請求的最大數量。

預設值:0

8

DEFAULT_ITEM_CLASS

用於表示專案的類。

預設值:'scrapy.item.Item'

9

DEFAULT_REQUEST_HEADERS

Scrapy HTTP 請求的預設標頭。

預設值:

{  
   'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,
	*/*;q=0.8', 'Accept-Language': 'en',  
} 
10

DEPTH_LIMIT

爬蟲爬取任何網站的最大深度。

預設值:0

11

DEPTH_PRIORITY

一個整數,用於根據深度更改請求的優先順序。

預設值:0

12

DEPTH_STATS

是否收集深度統計資訊。

預設值:True

13

DEPTH_STATS_VERBOSE

啟用此設定後,將為每個詳細深度收集統計資訊中的請求數量。

預設值:False

14

DNSCACHE_ENABLED

用於啟用記憶體中 DNS 快取。

預設值:True

15

DNSCACHE_SIZE

定義記憶體中 DNS 快取的大小。

預設值:10000

16

DNS_TIMEOUT

用於設定 DNS 處理查詢的超時時間。

預設值:60

17

DOWNLOADER

用於爬取過程的下載器。

預設值:'scrapy.core.downloader.Downloader'

18

DOWNLOADER_MIDDLEWARES

包含下載器中介軟體及其順序的字典。

預設值:{}

19

DOWNLOADER_MIDDLEWARES_BASE

包含預設啟用的下載器中介軟體的字典。

預設值:

{ 'scrapy.downloadermiddlewares.robotstxt.RobotsTxtMiddleware': 100, }
20

DOWNLOADER_STATS

此設定用於啟用下載器統計資訊。

預設值:True

21

DOWNLOAD_DELAY

定義下載器在從網站下載頁面之前的總時間。

預設值:0

22

DOWNLOAD_HANDLERS

包含下載處理程式的字典。

預設值:{}

23

DOWNLOAD_HANDLERS_BASE

包含預設啟用的下載處理程式的字典。

預設值:

{ 'file': 'scrapy.core.downloader.handlers.file.FileDownloadHandler', }
24

DOWNLOAD_TIMEOUT

下載器等待超時之前的總時間。

預設值:180

25

DOWNLOAD_MAXSIZE

下載器下載的響應的最大大小。

預設值:1073741824 (1024MB)

26

DOWNLOAD_WARNSIZE

定義下載器發出警告的響應大小。

預設值:33554432 (32MB)

27

DUPEFILTER_CLASS

用於檢測和過濾重複請求的類。

預設值:'scrapy.dupefilters.RFPDupeFilter'

28

DUPEFILTER_DEBUG

設定為 true 時,此設定會記錄所有重複過濾器。

預設值:False

29

EDITOR

用於使用 `edit` 命令編輯爬蟲。

預設值:取決於環境

30

EXTENSIONS

包含在專案中啟用的擴充套件的字典。

預設值:{}

31

EXTENSIONS_BASE

包含 Scrapy 預設啟用的內建擴充套件的字典。

預設值:{ 'scrapy.extensions.corestats.CoreStats': 0, }

32

FEED_TEMPDIR

用於設定自定義資料夾,在該資料夾中可以儲存爬蟲臨時檔案。

33

ITEM_PIPELINES

包含管道的字典。

預設值:{}

34

LOG_ENABLED

定義是否啟用日誌記錄。

預設值:True

35

LOG_ENCODING

定義用於日誌記錄的編碼型別。

預設值:'utf-8'

36

LOG_FILE

用於日誌記錄輸出的檔名。

預設值:None

37

LOG_FORMAT

一個字串,可以使用它來格式化日誌訊息。

預設值:'%(asctime)s [%(name)s] %(levelname)s: %(message)s'

38

LOG_DATEFORMAT

一個字串,可以使用它來格式化日期/時間。

預設值:'%Y-%m-%d %H:%M:%S'

39

LOG_LEVEL

定義最低日誌級別。

預設值:'DEBUG'

40

LOG_STDOUT

如果設定為 true,則所有程序輸出都將顯示在日誌中。

預設值:False

41

MEMDEBUG_ENABLED

定義是否啟用記憶體除錯。

預設值:False

42

MEMDEBUG_NOTIFY

定義啟用記憶體除錯時傳送到特定地址的記憶體報告。

預設值:[]

43

MEMUSAGE_ENABLED

定義當 Scrapy 程序超過記憶體限制時是否啟用記憶體使用情況。

預設值:False

44

MEMUSAGE_LIMIT_MB

定義允許的最大記憶體限制(以兆位元組為單位)。

預設值:0

45

MEMUSAGE_CHECK_INTERVAL_SECONDS

用於透過設定間隔長度來檢查當前記憶體使用情況。

預設值:60.0

46

MEMUSAGE_NOTIFY_MAIL

用於在記憶體達到限制時透過郵件列表通知。

預設值:False

47

MEMUSAGE_REPORT

定義是否在關閉每個爬蟲時傳送記憶體使用情況報告。

預設值:False

48

MEMUSAGE_WARNING_MB

定義在傳送警告之前的總記憶體允許量。

預設值:0

49

NEWSPIDER_MODULE

使用 `genspider` 命令建立新爬蟲的模組。

預設值:''

50

RANDOMIZE_DOWNLOAD_DELAY

定義 Scrapy 下載網站請求時等待的隨機時間量。

預設值:True

51

REACTOR_THREADPOOL_MAXSIZE

定義反應器執行緒池的最大大小。

預設值:10

52

REDIRECT_MAX_TIMES

定義請求可以重定向的次數。

預設值:20

53

REDIRECT_PRIORITY_ADJUST

設定此設定後,將調整請求的重定向優先順序。

預設值:+2

54

RETRY_PRIORITY_ADJUST

設定此設定後,將調整請求的重試優先順序。

預設值:-1

55

ROBOTSTXT_OBEY

設定為 `true` 時,Scrapy 遵守 robots.txt 策略。

預設值:False

56

SCHEDULER

定義要用於爬取目的的排程程式。

預設值:'scrapy.core.scheduler.Scheduler'

57

SPIDER_CONTRACTS

專案中包含用於測試爬蟲的爬蟲契約的字典。

預設值:{}

58

SPIDER_CONTRACTS_BASE

包含 Scrapy 預設啟用的 Scrapy 契約的字典。

預設值:

{ 
   'scrapy.contracts.default.UrlContract' : 1, 
   'scrapy.contracts.default.ReturnsContract': 2, 
} 
59

SPIDER_LOADER_CLASS

定義實現 `SpiderLoader API` 來載入爬蟲的類。

預設值:'scrapy.spiderloader.SpiderLoader'

60

SPIDER_MIDDLEWARES

包含爬蟲中介軟體的字典。

預設值:{}

61

SPIDER_MIDDLEWARES_BASE

包含 Scrapy 預設啟用的爬蟲中介軟體的字典。

預設值:

{ 
   'scrapy.spidermiddlewares.httperror.HttpErrorMiddleware': 50, 
}
62

SPIDER_MODULES

包含 Scrapy 將查詢的爬蟲的模組列表。

預設值:[]

63

STATS_CLASS

實現 `Stats Collector API` 來收集統計資訊的類。

預設值:'scrapy.statscollectors.MemoryStatsCollector'

64

STATS_DUMP

設定為 true 時,此設定會將統計資訊轉儲到日誌。

預設值:True

65

STATSMAILER_RCPTS

爬蟲完成抓取後,Scrapy 使用此設定傳送統計資訊。

預設值:[]

66

TELNETCONSOLE_ENABLED

定義是否啟用telnet控制檯。

預設值:True

67

TELNETCONSOLE_PORT

定義telnet控制檯的埠。

預設值: [6023, 6073]

68

TEMPLATES_DIR

包含建立新專案時可使用的模板的目錄。

預設值:scrapy模組內的templates目錄

69

URLLENGTH_LIMIT

定義允許抓取URL的最大長度限制。

預設值:2083

70

USER_AGENT

定義抓取網站時使用的使用者代理。

預設值:"Scrapy/VERSION (+http://scrapy.org)"

更多Scrapy設定,請訪問此連結

廣告
© . All rights reserved.