- Scrapy 教程
- Scrapy - 首頁
- Scrapy 基本概念
- Scrapy - 概述
- Scrapy - 環境
- Scrapy - 命令列工具
- Scrapy - 爬蟲 (Spider)
- Scrapy - 選擇器
- Scrapy - 專案 (Item)
- Scrapy - 專案載入器 (Item Loader)
- Scrapy - Shell
- Scrapy - 專案管道 (Item Pipeline)
- Scrapy - 資料匯出 (Feed exports)
- Scrapy - 請求 & 響應
- Scrapy - 連結提取器
- Scrapy - 設定
- Scrapy - 異常
- Scrapy 實戰專案
- Scrapy - 建立專案
- Scrapy - 定義專案
- Scrapy - 第一個爬蟲
- Scrapy - 爬取
- Scrapy - 提取專案
- Scrapy - 使用專案
- Scrapy - 跟蹤連結
- Scrapy - 抓取資料
- Scrapy 有用資源
- Scrapy - 快速指南
- Scrapy - 有用資源
- Scrapy - 討論
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設定,請訪問此連結。