关于Scrapy框架的替换代理ip问题的困惑

时间:2018-10-29 15:22:49

标签: python scrapy

我目前正在尝试在Scrapy框架中随机尝试代理ip。(我使用Python3.6,Scrapy版本为1.5.1,我的项目名称为ip,工作名称为ip_test),我对此感到困惑错误:

raise SchemeNotSupported("Unsupported scheme: %r" % (uri.scheme,)) twisted.web.error.SchemeNotSupported: Unsupported scheme: b'' 我不知道哪里错了,这是我的middlewares.py

class IpDownloaderMiddleware(object):
PROXY = ["117.95.7.27:11170", "119.114.17.24:38715", "183.149.2.23:28970", "117.60.3.6:26965",
         "123.245.11.50:25550"]
def process_request(self, request, spider):
    proxy = random.choice(self.PROXY)
    request.meta["proxy"] = proxy

这是我的设置。py

DOWNLOADER_MIDDLEWARES = {'ip.middlewares.IpDownloaderMiddleware': 100,}

thx!

1 个答案:

答案 0 :(得分:2)

如错误消息所示,Scrapy(或更确切地说是Twisted)要求代理URL包含方案,而不是仅包含<netloc>:<port>

例如而不是设置request.meta["proxy"] = '117.95.7.27:11170',您需要request.meta["proxy"] = 'http://117.95.7.27:11170'