一个请求失败时,使用其他代理再次请求

时间:2019-08-08 17:47:55

标签: python scrapy

我使用了一个代理池,因此每个请求都被分配了一个不同的代理,其代码类似于以下内容:

class MySpider(BaseSpider):
    name = "my_spider"
    def __init__(self, *args, **kwargs):
        super(MySpider, self).__init__(*args, **kwargs)
        self.proxy_pool = ['proxy_address1', 'proxy_address2', ..., 'proxy_addressN']

    def parse(self, response):
        ...parse code...
        if something:
            yield self.get_request(url)

    def get_request(self, url):
        req = Request(url=url)
        if self.proxy_pool:
            req.meta['proxy'] = random.choice(self.proxy_pool)
        return req

问题是当错误的代理出现并且连接失败时,隐含的网页将丢失。我想使用其他代理重新启动失败的请求。

可以使用中间件吗?

0 个答案:

没有答案