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

时间:2018-01-05 08:19:25

标签: python python-3.x scrapy multiprocess

我想抓一个关于网站的信息。我像这样使用代理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,因此它很慢。如果我想在此添加多进程。我该怎么办?

感谢。

1 个答案:

答案 0 :(得分: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
相反,它会将响应移交给相关的回调函数。