一、背景:
小编在爬虫的时候肯定会遇到被封杀的情况,昨天爬了一个网站,刚开始是可以了,在settings的设置DEFAULT_REQUEST_HEADERS伪装自己是chrome浏览器,刚开始是可以的,紧接着就被对方服务器封杀了。
代理:
代理,代理,一直觉得爬去网页把爬去速度放慢一点就能基本避免被封杀,虽然可以使用selenium,但是这个坎必须要过,scrapy的代理其实设置起来很简单。
注意,request.meta['proxy']=代理ip的API
1 2 3 4 5 6 7 8 | middlewares.py class HttpbinProxyMiddleware( object ): def process_request( self , request, spider): pro_addr = requests.get( 'http://127.0.0.1:5000/get' ).text request.meta[ 'proxy' ] = 'http://' + pro_addr #request.meta['proxy'] = 'http://' + proxy_ip |
设置启动上面我们写的这个代理
1 2 3 4 | settings.py DOWNLOADER_MIDDLEWARES = { 'httpbin.middlewares.HttpbinProxyMiddleware' : 543 , } |
spiders
1 2 3 4 5 6 7 8 9 10 11 | httpbin_test.py import scrapy class HttpbinTestSpider(scrapy.Spider): name = "httpbin_test" allowed_domains = [ "httpbin.ort/get" ] start_urls = [ 'http://httpbin.org/get' ] def parse( self , response): print (response.text) |
origin的值其实就是本地的公网地址,但是因为我们用了代理,这里的ip是美国的一个ip
参考l
参考链接:https://www.cnblogs.com/lei0213/p/7904994.html