如何处理scrapy中的请求失败?

问题描述 投票:0回答:1

我想抓一个关于网站的信息。我像这样使用代理IP:

def process_request(self, request, spider):
    item = random.choice(ippool)
    request.meta['proxy'] = "http://"+item['ip']
    request.meta['dont_redirect'] = True

但它会引起一些错误:

DEBUG:已抓取(302),已抓取(403), 信息:忽略响应,500内部服务器错误

等等。我怎样才能解决这些问题。

另一方面,由于这是代理IP,因此它很慢。如果我想在此添加多进程。我应该怎么做?

谢谢。

python python-3.x scrapy multiprocess
1个回答
0
投票

要处理特定的HTTP状态代码,您可以定义handle_httpstatus_list

class MySpider(scrapy.Spider):
    name = "spider_name"
    handle_httpstatus_list = [500, and more here] 

现在它不会显示

INFO: Ignoring response, 500 Internal Server Error

相反,它会将响应移交给相关的回调函数。

© www.soinside.com 2019 - 2024. All rights reserved.