scrapy框架使用代理ip的基本思路是修改请求对象中的meta['proxy']的值,将代理ip赋值给这个属性。遵循这个思路,只要是生成Request对象的地方都可以设置Request的值。
downloader中间件
spider中间件
spider内部对象定义的内部parse函数和parse_start_url()等
其中最方便的是在downloadermiddleware中使用
只要在request中加入下面的设置就可以实现代理ip访问资源,当然前提是这个代理ip可用以及满足可以使用协议:
request.meta['proxy'] = 'http://%s:%d'%('110.73.10.242', 8123)
至于其它像读取ip、ip调用顺序的逻辑就直接在生成请求的地方进行设置即可。
相关的内容:使用通用库进行网络爬取的方式
1 import urllib2 2 import urllib 3 import requests 4 url = 'http://baiduc.com/' 5 req = urllib2.Request(url=url) 6 req.set_proxy('12.24.23.111',9000) 7 response = urllib.urlopen(req, timeout=30) 8 print(response.msg)
都是通过在请求上设置代理来达到目的。