【发布时间】:2019-02-16 11:25:38
【问题描述】:
我正在使用 Scrapy 和 Crawlera 代理抓取单个域,有时由于 Crawlera 问题(技术中断),我收到 407 状态代码,无法抓取任何网站。是否可以停止请求管道 10 分钟然后重新启动蜘蛛?需要明确的是,我不想推迟请求,而是停止一切(可能除了项目处理)10 分钟,直到他们解决问题。我正在运行 10 个并发线程。
【问题讨论】:
标签: web-scraping scrapy crawlera
我正在使用 Scrapy 和 Crawlera 代理抓取单个域,有时由于 Crawlera 问题(技术中断),我收到 407 状态代码,无法抓取任何网站。是否可以停止请求管道 10 分钟然后重新启动蜘蛛?需要明确的是,我不想推迟请求,而是停止一切(可能除了项目处理)10 分钟,直到他们解决问题。我正在运行 10 个并发线程。
【问题讨论】:
标签: web-scraping scrapy crawlera
是的,你可以,有几种方法可以做到这一点,但最明显的就是简单地插入一些阻塞代码:
# middlewares.py
class BlockMiddleware:
def process_response(self, response, request):
if response.status == 407:
print('beep boop, taking a nap')
time.sleep(60)
并激活它:
# settings.py
DOWNLOADER_MIDDLEWARES = {
'myproject.middlewares.BlockMiddleware': 100,
{
【讨论】: