我们可以使用scrapy_splash设置蜘蛛的代理吗?

时间:2018-07-25 11:42:18

标签: python-3.x proxy scrapy web-crawler scrapy-splash

当我使用Scrapy实现蜘蛛时,我想更改它的代理,以便服务器不会根据ip的频繁请求禁止我的请求。我也知道如何使用中间件使用Scrapy更改代理,或者在我请求时直接更改元。

但是,我使用包scrapy_splash来为我的Spider执行Javascript,然后发现更改代理很困难,因为我认为scrapy_splash使用代理服务器为我们呈现网站的JS。

实际上,当我仅使用Scrapy时,代理运行良好,但是当我使用scrapy_splash时却变得无用。

那么有什么方法可以为scrapy_splash的请求设置代理?

帮我,PLZ,谢谢

4小时后修改:

我已经在setting.py中设置了相关设置,并将其写入了middlewares.py中。正如我之前提到的,这仅适用于scrapy,但不适用于scrapy_splash:

class RandomIpProxyMiddleware(object):
    def __init__(self, ip=''):
        self.ip = ip
        ip_get()
        with open('carhome\\ip.json', 'r') as f:
            self.IPPool = json.loads(f.read())

    def process_request(self, request, spider):
        thisip = random.choice(self.IPPool)
        request.meta['proxy'] = "http://{}".format(thisip['ipaddr'])

这是蜘蛛中带有scrapy_splash的代码:

    yield scrapy_splash.SplashRequest(
            item, callback=self.parse, args={'wait': 0.5})

这是没有此插件的蜘蛛中的代码:

    yield scrapy.Request(item, callback=self.parse)

0 个答案:

没有答案