scrapy間歇性響應為空/降速/緩存
使用 scrapy訪問豆瓣的搜索接口時,莫名會出現response json數據為空的情況。
加上回調重新請求 (要設置dont_filter=True 防止被過濾), 還是會出現異常。
最后發現是請求速度過快導致的。
降速:
將其中的訪問速度與下載速度調整一下,具體設置:
#并發請求個數(越小越慢) 默認是16個 CONCURRENT_REQUESTS = 5 #下載延遲時間(越大請求越慢) DOWNLOAD_DELAY = 3
1
2
3
4
5
而對于多個spider文件需要不同的請求策略,則可以在爬蟲文件中配置單獨的 custom_settings:
自動限速(AutoThrottle):
可參考文檔:https://scrapy-chs.readthedocs.io/zh_CN/1.0/topics/autothrottle.html?highlight=auto#autothrottle-algorithm
該擴展能根據Scrapy服務器及您爬取的網站的負載自動限制爬取速度。
更友好的對待網站,而不使用默認的下載延遲0。自動調整scrapy來優化下載速度。
#默認False;為True表示啟用AUTOTHROTTLE擴展 AUTOTHROTTLE_ENABLED = True #默認3秒;初始下載延遲時間 AUTOTHROTTLE_START_DELAY = 1 #默認60秒;在高延遲情況下最大的下載延遲 AUTOTHROTTLE_MAX_DELAY = 3
1
2
3
4
5
6
7
8
httpscatch緩存:
httpscatch 對HTTP請求和響應的緩存。
如果啟用 HTTPCACHE_ENABLED 的話,它會緩存每個請求和對應的響應。
HTTPCACHE_ENABLED = True HTTPCACHE_EXPIRATION_SECS = 0 HTTPCACHE_DIR = 'httpcache' HTTPCACHE_IGNORE_HTTP_CODES = [] HTTPCACHE_STORAGE = 'scrapy.extensions.httpcache.FilesystemCacheStorage'
1
2
3
4
5
可參考文檔:https://doc.scrapy.org/en/latest/topics/downloader-middleware.html#httpcache-middleware-settings
Scrapy
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。