
正文
scrapy中使用 IP 代理
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
在 scrapy 中使用 ip 代理需要借助中间件的功能
首先在settings 中设置好中间件,中间件优先级数字越小越先被执行
'DOWNLOADER_MIDDLEWARES':{
'spider.spider.middlewares.ProxyMiddleWare':,
'spider.spider.middlewares.SelenuimDownloaderMiddleware':
}
然后编写中间件,拦截请求设置代理
class ProxyMiddleWare(object): def process_request(self, request, spider): """ 对 request 加上proxy"""
proxy = RedisClient().pop_proxy().decode('utf-8')
print('---------this is request ip ----------:'+ proxy)
request.meta['proxy'] = proxy def process_response(self, request, response, spider): """ 对返回的 response 处理""" # 如果返回的 response 状态不是 , 重新生成当前的 request对象
if response.status != :
proxy = RedisClient().pop_proxy().decode('utf-8')
print('this is response ip:'+ proxy)
# 对当前 request 加上代理
return request return response







