描述
在Scrapy組件的特性可以用Scrapy設置進行修改。 這些設置也可以選擇Scrapy項目當前處於活動狀態的情況下,如果你有多個Scrapy項目。
指定的設置
您必須通知哪些當你放棄一個網站,你正在使用設置Scrapy。 為此,重點內容環境變量SCRAPY_SETTINGS_MODULE應使用其值應在Python路徑語法。
填充設置
下表顯示了一些通過它可以填充設置的機制:
SN 機制和說明
1. Command line options
在這里,所傳遞的參數通過重寫其他選項最高的優先順序。 該-s用於覆蓋一個或多個設置。
scrapy crawl myspider -s LOG_FILE=scrapy.log
2. Settings per-spider
蜘蛛可以有自己的設置,通過使用屬性custom_settings覆蓋項目的。
class DemoSpider(scrapy.Spider) : name = 'demo' custom_settings = { 'SOME_SETTING': 'some value', }
3. Project settings module 在這里,你可以像填充在settings.py文件添加或修改的設置您的自定義設置。 4. Default settings per-command 每個Scrapy工具命令定義自己的設置在default_settings屬性,覆蓋全球的默認設置。 5. Default global settings: 這些設置的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() )
要在初始化之前蜘蛛使用的設置,您必須覆蓋from_crawler的方法init()你的蜘蛛的方法。 您可以通過屬性訪問設置scrapy.crawler.Crawler.settings傳遞給from_crawler方法。
下面的例子說明了這一點:
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的內置設置:
SN 設置和說明
1. AWS_ACCESS_KEY_ID 它是用於訪問亞馬遜網絡服務。 默認值:無 2. AWS_SECRET_ACCESS_KEY 它是用於訪問亞馬遜網絡服務。 3. BOT_NAME 它是一種可以用於構建用戶代理機器人的名稱。 默認值:“scrapybot” 4. CONCURRENT_ITEMS 在用來並行地處理所述物品處理器的現有項目的最大數目。 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 它與默認情況下啟用下載處理程序的字典。 默認值:{ '文件': '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 它是用來編輯使用編輯命令蜘蛛。 默認值:取決於環境 30. EXTENSIONS 它是具有在項目中啟用的擴展字典。 默認值: {} 31. EXTENSIONS_BASE 它是具有內置的擴展字典。 默認值:{ 'scrapy.extensions.corestats.CoreStats':0,} 32. FEED_TEMPDIR 它是用來設置,其中履帶臨時文件可以存儲自定義文件夾的目錄。 33. ITEM_PIPELINES 它是具有管線的字典。 默認值: {} 34. LOG_ENABLED 它定義如果日志被啟用。 默認值:True 35. LOG_ENCODING 它定義了將用於記錄的編碼類型。 默認值: 'UTF-8' 36. LOG_FILE 它是用於記錄的輸出文件的名稱。 默認值:無 37. LOG_FORMAT 它是利用它的日志信息可以被格式化的字符串。 默認值: '%(asctime)小號[%(name) S] %(levelname) S: %(message) s'的 38. LOG_DATEFORMAT 它是利用它的日期/時間可以格式化字符串。 默認值: '%Y-%間 - %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 如果定義了存儲器的最大限制(in megabytes)被允許。 默認值: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 當設置為Scrapy遵循robots.txt政策true 。 默認值: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 它定義是否啟用telnetconsole。 默認值:True 67. TELNETCONSOLE_PORT 它定義了Telnet控制台端口。 默認值:[6023,6073] 68. TEMPLATES_DIR 它是包含可以在創建新的項目中使用的模板目錄。 默認值: templates scrapy模塊內部目錄 69. URLLENGTH_LIMIT 它定義了將被允許抓取的網址的長度為URL的最大極限。 默認值:2083 70. USER_AGENT 它定義了在抓取網站所使用的用戶代理。 默認值: “Scrapy / VERSION“
轉載自: https://blog.csdn.net/henry620/article/details/55505662 感謝作者 henry620