Python 无法在Scrapy项目中使用代理

Python 无法在Scrapy项目中使用代理,python,web-scraping,proxy,scrapy,web-crawler,Python,Web Scraping,Proxy,Scrapy,Web Crawler,我一直在试图抓取一个网站,它似乎已经识别并阻止了我的IP,并抛出了429个太多的请求响应 我从这个链接安装了scrapy代理:并遵循给定的说明。 我从这里得到了一个代理列表:下面是我的settings.py和proxylist.txt的样子: 设置.py BOT_NAME = 'project' SPIDER_MODULES = ['project.spiders'] NEWSPIDER_MODULE = 'project.spiders' # Retry many times since pr

我一直在试图抓取一个网站,它似乎已经识别并阻止了我的IP,并抛出了429个太多的请求响应

我从这个链接安装了scrapy代理:并遵循给定的说明。 我从这里得到了一个代理列表:下面是我的settings.py和proxylist.txt的样子:

设置.py

BOT_NAME = 'project'
SPIDER_MODULES = ['project.spiders']
NEWSPIDER_MODULE = 'project.spiders'
# Retry many times since proxies often fail
RETRY_TIMES = 10
# Retry on most error codes since proxies fail for different reasons
RETRY_HTTP_CODES = [429, 500, 503, 504, 400, 403, 404, 408]

DOWNLOADER_MIDDLEWARES = {
    'scrapy.downloadermiddlewares.retry.RetryMiddleware': 90,
    'scrapy_proxies.RandomProxy': 100,
    'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware': 110,
}

PROXY_LIST = "filepath\proxylist.txt"
USER_AGENT = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.95 Safari/537.36'
CONCURRENT_REQUESTS = 1
DOWNLOAD_DELAY = 2

PROXY_MODE = 0
DOWNLOAD_HANDLERS = {'s3': None}

EXTENSIONS = {
   'scrapy.telnet.TelnetConsole': None
}
proxylist.txt

http://195.208.172.20:8080
http://154.119.56.179:9999
http://124.12.50.43:8088
http://61.7.168.232:52136
http://122.193.188.236:8118
然而,当我运行爬虫程序时,我得到以下错误:

[scrapy.proxies] DEBUG: Proxy user pass not found
我试图在谷歌上搜索具体的错误,但找不到任何解决方案


我们将非常感谢您的帮助。非常感谢。

我建议您创建自己的中间件,像这样指定IP:PORT,并将此
proxies.py
中间件文件放在项目的
中间件
文件夹中:

class ProxiesMiddleware(object):
    def __init__(self, settings):
        pass

    @classmethod
    def from_crawler(cls, crawler):
        return cls(crawler.settings)

    def process_request(self, request, spider):
        request.meta['proxy'] = "http://IP:PORT"
ProxiesMiddleware
中间件行添加到您的
settings.py

DOWNLOADER_MIDDLEWARES = {
   'yourproject.middleware.proxies.ProxiesMiddleware':400,
}

它给出以下错误:ImportError:没有名为proxies@Kunwar这可能取决于你的继承权。您需要准确定位
ProxiesMiddleware
文件/函数的位置。您可能会将其直接放入
中间件
文件夹/文件中,在这种情况下,您应该从
下载工具(middleware
列表)中的该项目中删除
.proxies
。这实际上可能只是一个信息,即您的列表每一行都没有任何密码和用户名,如果他们提供匿名访问,这是可以的。看看这里:else只是记录信息:log.debug('未找到代理用户密码')