日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

scrapy之settings参数

發布時間:2024/8/26 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 scrapy之settings参数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
#==>第一部分:基本配置<=== #1、項目名稱,默認的USER_AGENT由它來構成,也作為日志記錄的日志名 BOT_NAME = 'Amazon'#2、爬蟲應用路徑 SPIDER_MODULES = ['Amazon.spiders'] NEWSPIDER_MODULE = 'Amazon.spiders'#3、客戶端User-Agent請求頭 #USER_AGENT = 'Amazon (+http://www.yourdomain.com)'#4、是否遵循爬蟲協議 # Obey robots.txt rules ROBOTSTXT_OBEY = False#5、是否支持cookie,cookiejar進行操作cookie,默認開啟 #COOKIES_ENABLED = False#6、Telnet用于查看當前爬蟲的信息,操作爬蟲等...使用telnet ip port ,然后通過命令操作 #TELNETCONSOLE_ENABLED = False #TELNETCONSOLE_HOST = '127.0.0.1' #TELNETCONSOLE_PORT = [6023,]#7、Scrapy發送HTTP請求默認使用的請求頭 #DEFAULT_REQUEST_HEADERS = { # 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', # 'Accept-Language': 'en', #}#===>第二部分:并發與延遲<=== #1、下載器總共最大處理的并發請求數,默認值16 #CONCURRENT_REQUESTS = 32#2、每個域名能夠被執行的最大并發請求數目,默認值8 #CONCURRENT_REQUESTS_PER_DOMAIN = 16#3、能夠被單個IP處理的并發請求數,默認值0,代表無限制,需要注意兩點 #I、如果不為零,那CONCURRENT_REQUESTS_PER_DOMAIN將被忽略,即并發數的限制是按照每個IP來計算,而不是每個域名 #II、該設置也影響DOWNLOAD_DELAY,如果該值不為零,那么DOWNLOAD_DELAY下載延遲是限制每個IP而不是每個域 #CONCURRENT_REQUESTS_PER_IP = 16#4、如果沒有開啟智能限速,這個值就代表一個規定死的值,代表對同一網址延遲請求的秒數 #DOWNLOAD_DELAY = 3#===>第三部分:智能限速/自動節流:AutoThrottle extension<=== #一:介紹 from scrapy.contrib.throttle import AutoThrottle #http://scrapy.readthedocs.io/en/latest/topics/autothrottle.html#topics-autothrottle 設置目標: 1、比使用默認的下載延遲對站點更好 2、自動調整scrapy到最佳的爬取速度,所以用戶無需自己調整下載延遲到最佳狀態。用戶只需要定義允許最大并發的請求,剩下的事情由該擴展組件自動完成#二:如何實現? 在Scrapy中,下載延遲是通過計算建立TCP連接到接收到HTTP包頭(header)之間的時間來測量的。 注意,由于Scrapy可能在忙著處理spider的回調函數或者無法下載,因此在合作的多任務環境下準確測量這些延遲是十分苦難的。 不過,這些延遲仍然是對Scrapy(甚至是服務器)繁忙程度的合理測量,而這擴展就是以此為前提進行編寫的。#三:限速算法 自動限速算法基于以下規則調整下載延遲 #1、spiders開始時的下載延遲是基于AUTOTHROTTLE_START_DELAY的值 #2、當收到一個response,對目標站點的下載延遲=收到響應的延遲時間/AUTOTHROTTLE_TARGET_CONCURRENCY #3、下一次請求的下載延遲就被設置成:對目標站點下載延遲時間和過去的下載延遲時間的平均值 #4、沒有達到200個response則不允許降低延遲 #5、下載延遲不能變的比DOWNLOAD_DELAY更低或者比AUTOTHROTTLE_MAX_DELAY更高#四:配置使用 #開啟True,默認False AUTOTHROTTLE_ENABLED = True #起始的延遲 AUTOTHROTTLE_START_DELAY = 5 #最小延遲 DOWNLOAD_DELAY = 3 #最大延遲 AUTOTHROTTLE_MAX_DELAY = 10 #每秒并發請求數的平均值,不能高于 CONCURRENT_REQUESTS_PER_DOMAIN或CONCURRENT_REQUESTS_PER_IP,調高了則吞吐量增大強奸目標站點,調低了則對目標站點更加”禮貌“ #每個特定的時間點,scrapy并發請求的數目都可能高于或低于該值,這是爬蟲視圖達到的建議值而不是硬限制 AUTOTHROTTLE_TARGET_CONCURRENCY = 16.0 #調試 AUTOTHROTTLE_DEBUG = True CONCURRENT_REQUESTS_PER_DOMAIN = 16 CONCURRENT_REQUESTS_PER_IP = 16#===>第四部分:爬取深度與爬取方式<=== #1、爬蟲允許的最大深度,可以通過meta查看當前深度;0表示無深度 # DEPTH_LIMIT = 3#2、爬取時,0表示深度優先Lifo(默認);1表示廣度優先FiFo# 后進先出,深度優先 # DEPTH_PRIORITY = 0 # SCHEDULER_DISK_QUEUE = 'scrapy.squeue.PickleLifoDiskQueue' # SCHEDULER_MEMORY_QUEUE = 'scrapy.squeue.LifoMemoryQueue' # 先進先出,廣度優先# DEPTH_PRIORITY = 1 # SCHEDULER_DISK_QUEUE = 'scrapy.squeue.PickleFifoDiskQueue' # SCHEDULER_MEMORY_QUEUE = 'scrapy.squeue.FifoMemoryQueue'#3、調度器隊列 # SCHEDULER = 'scrapy.core.scheduler.Scheduler' # from scrapy.core.scheduler import Scheduler#4、訪問URL去重 # DUPEFILTER_CLASS = 'step8_king.duplication.RepeatUrl'#===>第五部分:中間件、Pipelines、擴展<=== #1、Enable or disable spider middlewares # See http://scrapy.readthedocs.org/en/latest/topics/spider-middleware.html #SPIDER_MIDDLEWARES = { # 'Amazon.middlewares.AmazonSpiderMiddleware': 543, #}#2、Enable or disable downloader middlewares # See http://scrapy.readthedocs.org/en/latest/topics/downloader-middleware.html DOWNLOADER_MIDDLEWARES = {# 'Amazon.middlewares.DownMiddleware1': 543, }#3、Enable or disable extensions # See http://scrapy.readthedocs.org/en/latest/topics/extensions.html #EXTENSIONS = { # 'scrapy.extensions.telnet.TelnetConsole': None, #}#4、Configure item pipelines # See http://scrapy.readthedocs.org/en/latest/topics/item-pipeline.html ITEM_PIPELINES = {# 'Amazon.pipelines.CustomPipeline': 200, }#===>第六部分:緩存<=== """ 1. 啟用緩存目的用于將已經發送的請求或相應緩存下來,以便以后使用from scrapy.downloadermiddlewares.httpcache import HttpCacheMiddlewarefrom scrapy.extensions.httpcache import DummyPolicyfrom scrapy.extensions.httpcache import FilesystemCacheStorage """ # 是否啟用緩存策略 # HTTPCACHE_ENABLED = True# 緩存策略:所有請求均緩存,下次在請求直接訪問原來的緩存即可 # HTTPCACHE_POLICY = "scrapy.extensions.httpcache.DummyPolicy" # 緩存策略:根據Http響應頭:Cache-Control、Last-Modified 等進行緩存的策略 # HTTPCACHE_POLICY = "scrapy.extensions.httpcache.RFC2616Policy"# 緩存超時時間 # HTTPCACHE_EXPIRATION_SECS = 0# 緩存保存路徑 # HTTPCACHE_DIR = 'httpcache'# 緩存忽略的Http狀態碼 # HTTPCACHE_IGNORE_HTTP_CODES = []# 緩存存儲的插件 # HTTPCACHE_STORAGE = 'scrapy.extensions.httpcache.FilesystemCacheStorage'#===>第七部分:線程池<=== REACTOR_THREADPOOL_MAXSIZE = 10#Default: 10 #scrapy基于twisted異步IO框架,downloader是多線程的,線程數是Twisted線程池的默認大小(The maximum limit for Twisted Reactor thread pool size.)#關于twisted線程池: http://twistedmatrix.com/documents/10.1.0/core/howto/threading.html#線程池實現:twisted.python.threadpool.ThreadPool twisted調整線程池大小: from twisted.internet import reactor reactor.suggestThreadPoolSize(30)#scrapy相關源碼: D:\python3.6\Lib\site-packages\scrapy\crawler.py#補充: windows下查看進程內線程數的工具:https://docs.microsoft.com/zh-cn/sysinternals/downloads/pslist或https://pan.baidu.com/s/1jJ0pMaM命令為:pslist |findstr pythonlinux下:top -p 進程id#===>第八部分:其他默認配置參考<=== D:\python3.6\Lib\site-packages\scrapy\settings\default_settings.py

?

轉載于:https://www.cnblogs.com/lujiacheng-Python/p/10221971.html

總結

以上是生活随笔為你收集整理的scrapy之settings参数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。