应用scrapy爬虫的时候,经常遇到ip被封的问题,直接导致无法获取数据,所以要使用代理ip。
在网上有很多大神写的案例,我选择了一个进行使用,不知道是ip的原因还是我写的有问题,还是会报错,但是思路总是有的,先记下来再熟悉一遍慢慢就会了。
首先第一步是在settings文件里设置好proxy_list
PROXIES_LIST = {
'http://112.85.168.96:9999',
'http://1.197.203.234:9999',
'http://120.83.106.228:9999'
'https://223.241.78.23:808',
'https://112.85.171.126:9999'
]
第二步是在下载器中间件中加入代理IP,在把中间的类名加入setting中。
什么是下载器中间件。
参考scrapy官方文档可以看到。
下载器中间件是 Scrapy 请求/响应处理的钩子框架。这是一个轻量级的低级系统,用于全局更改 Scrapy 的请求和响应。
也就是说,下载器中间件可以全局修改Scrapy request和response,那就可以在这里设置代理ip来请求网页。
下载器中间件在middlewares文件里.
在middlewares文件里设置process_request类和 import PROXIES_LIST
from douban.settings import PROXIES_LIST
import random
class process_request(object):
def process_request(self, request, spider):
request.meta['proxy'] = random.choice(PROXIES_LIST)
在settings文件里开启 donwloader_middlewares 中间件:
DOWNLOADER_MIDDLEWARES = {
# 'douban.middlewares.DoubanDownloaderMiddleware': 543,
'douban.middlewares.process_request': 541
}
这只是一个简单的思路,怕自己忘了,还要不断重复尝试。
哦对了,我用的代理网站是:高匿ip非国外免费代理服务器提供,非国外免费ip代理服务器地址列表 - 第1页 - 西拉免费代理IP
|