Scrapy
的文档说HttpProxyMiddleware
是这样的:
此中间件通过为
proxy
个对象设置proxy
元值来设置要用于请求的HTTPRequest
。与Python标准库模块
urllib
和urllib2
一样,它遵循以下环境变量:http_proxy https_proxy no_proxy
您还可以将每个请求的元键代理设置为
http://some_proxy_server:port
或http://username:password@some_proxy_server:port
之类的值。请记住,此值将优先于http_proxy/https_proxy
个环境变量,并且还会忽略no_proxy
环境变量。
但是文档中没有例子
我不知道怎么写HttpProxyMiddleware
有什么建议吗?
答案 0 :(得分:2)
你不需要写一个。 HttpProxyMiddleware 已存在于Scrapy中。
正如文档所述,有两种方法让Scrapy知道您需要通过代理请求:
设置环境变量 (例如从命令行)
export http_proxy="http://username:password@host:port"
您还可以将每个请求的元键"代理" 设置为http://some_proxy_server:port或http://username:password@some_proxy_server:port之类的值。
请注意,此值将优先于 http_proxy / https_proxy 环境变量,并且还会忽略 no_proxy 环境变量
e.g。
yield Request("http://google.com", meta={'proxy':'http://username:password@some_proxy_server:port'}, callback=self.some_method)
答案 1 :(得分:2)
在settings.py
中,只需执行此操作。
DOWNLOADER_MIDDLEWARES = {
'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware': 100
}
然后在yield
每个请求时执行此操作
yield Request(meta={'proxy': "http://%s"%(random.choice(["IP:PORT", "IP:PORT"]))})
就是这样!