Crawlera中间件命令启用httpcache

时间:2017-04-22 22:24:05

标签: scrapy

我不想对已经使用httpcache中间件缓存的页面使用crawlera代理服务(因为我对每月的调用数量有限制)。

我正在使用crawlera中间件,并使用以下方法启用它:

observe

根据文档(https://scrapy-crawlera.readthedocs.io/en/latest/)中的建议。

但是,在爬行结束后,我得到:

DOWNLOADER_MIDDLEWARES = {
'scrapy_crawlera.CrawleraMiddleware': 610}

    2017-04-23 00:14:24 [scrapy.statscollectors] INFO: Dumping Scrapy stats:
{'crawlera/request': 11,
 'crawlera/request/method/GET': 11,
 'crawlera/response': 11,
 'crawlera/response/status/200': 10,
 'crawlera/response/status/301': 1,
 'downloader/request_bytes': 3324,
 'downloader/request_count': 11,
 'downloader/request_method_count/GET': 11,
 'downloader/response_bytes': 1352925,
 'downloader/response_count': 11,
 'downloader/response_status_count/200': 10,
 'downloader/response_status_count/301': 1,
 'dupefilter/filtered': 6,
 'finish_reason': 'closespider_pagecount',
 'finish_time': datetime.datetime(2017, 4, 22, 22, 14, 24, 839013),
 'httpcache/hit': 11,
 'log_count/DEBUG': 12,
 'log_count/INFO': 9,
 'request_depth_max': 1,
 'response_received_count': 10,
 'scheduler/dequeued': 10,
 'scheduler/dequeued/memory': 10,
 'scheduler/enqueued': 23,
 'scheduler/enqueued/memory': 23,
 'start_time': datetime.datetime(2017, 4, 22, 22, 14, 24, 317893)}
2017-04-23 00:14:24 [scrapy.core.engine] INFO: Spider closed (closespider_pagecount)

所以我不确定这些调用是否通过了crawlera代理服务。当我将crawlera中间件订单更改为901,749,751时,我得到相同的结果。

有谁知道引擎盖下的内容是什么?是否直接从http缓存返回页面而不调用crawlera服务器?

谢谢!

1 个答案:

答案 0 :(得分:1)

将数字视为对其他中间件的引用。

'scrapy.downloadermiddlewares.httpcache.HttpCacheMiddleware': 600,
'rotating_proxies.middlewares.RotatingProxyMiddleware': 610,
'rotating_proxies.middlewares.BanDetectionMiddleware': 620

只需确保 httpcache.HttpCacheMiddleware 的数量少于代理中间件的数量。

这对我来说很好。