一个简单的动态代理池,通过较高频率的自检保证池内代理的高可靠性。
代码分三个部分:
- 一个scrapy爬虫去爬代理网站,获取免费代理,验证后入库 (proxy_fetch)
- 一个scrapy爬虫把代理池内的代理全部验证一遍,若验证失败就从代理池内删除 (proxy_check)
- 一个调度程序用于管理上面两个爬虫 (start.py)
需要先改一下配置文件hq-proxies.yml 在配置文件中也可以调整相应的阈值和免费代理源和测试页面。
#中间件
import redis
import random
class DynamicProxyMiddleware(object):
def process_request(self, request, spider):
redis_db = redis.StrictRedis(
host= '127.0.0.1',
port= 6379,
password= '',
db= 6
)
proxy = random.choice(list(redis_db.smembers("hq-proxies:proxy_pool"))).decode('utf-8')
spider.logger.debug('使用代理[%s]访问[%s]' % (proxy, request.url))
request.meta['proxy'] = proxy