-
282024年4月
-
302024年3月
-
292024年2月
-
312024年1月
-
312023年12月
-
302023年11月
-
312023年10月
-
302023年9月
-
312023年8月
-
352023年7月
-
312023年6月
-
312023年5月
-
302023年4月
-
312023年3月
-
282023年2月
-
312023年1月
-
312022年12月
-
302022年11月
-
312022年10月
-
302022年9月
-
312022年8月
-
322022年7月
-
292022年6月
-
322022年5月
-
302022年4月
-
332022年3月
-
312022年2月
-
372022年1月
-
382021年12月
-
382021年11月
-
402021年10月
-
432021年9月
-
372021年8月
-
442021年7月
-
442021年6月
-
432021年5月
-
342021年4月
-
312021年3月
-
292021年2月
-
352021年1月
-
422020年12月
-
402020年11月
-
482020年10月
-
522020年9月
-
852020年8月
-
752020年7月
-
802020年6月
-
782020年5月
-
772020年4月
-
432020年3月
-
362020年2月
-
452020年1月
-
562019年12月
-
712019年11月
-
612019年10月
-
562019年9月
-
532019年8月
-
362019年7月
-
362019年6月
-
382019年5月
-
402019年4月
-
352019年3月
-
342019年2月
-
442019年1月
-
392018年12月
-
402018年11月
-
392018年10月
-
392018年9月
-
452018年8月
-
452018年7月
-
392018年6月
-
512018年5月
-
492018年4月
-
342018年3月
-
282018年2月
-
482018年1月
-
732017年12月
-
7292017年11月
-
7442017年10月
-
2892017年9月
-
12017年8月
在进行爬虫工作的时候,经常会遇到IP被封的问题,烦不胜烦,还好可以使用代理IP来解决这一个麻烦。代理IP哪里来,有人说,网上很多免费的,把它们收集起来就有了,有人说直接找代理IP服务商,比如开心代理IP平台,高效稳定,性价比高。不管代理IP从哪里来,我们为了方便使用,需要建立一个代理池,这里使用Redis和Flask维护一个代理池,Redis主要用来提供代理池的队列存储,Flask是用来实现代理池的一个接口,用它可以从代理池中拿出一个代理,即通过web形式把代理返回过来,就可以拿到可用的代理了。
一、代理池的要求
持续更新获取代理IP,定时筛选IP是否有效,提供接口,方便提取使用。
二、代理池的架构
架构最核心的部分是“代理队列”,我们要维护的就是这个队列,里面存了很多代理,队列可以用python的数据结构来存,也可以用数据库来存。维护好队列我们需要做两件事情:
1、定时获取代理,添加到代理队列。
获取器从各大网站平台上把代理抓取下来,或者通过购买开心代理IP平台的API接口获取IP,临时存到一个数据结构里面,然后用过滤器对这些代理进行筛选。
筛选的方法也很简单,拿到代理之后,用它请求百度之类的网站,如果可以正常地请求网站,就说明代理可用,否则就将它剔除。过滤完之后将剩余可用的代理放入代理队列。
2、定时检测代理,实时更新代理队列。
因为代理IP具有有效期的特性,可能经过一段时间之后,代理队列里的部分代理已经失效,这就需要定时地从里面拿出一些代理,重新进行检测,保留可用的代理,剔除已经失效的代理。最后我们还需要做一个API,通过接口的形式拿到代理队列里面的一些代理进行使用。
代理池实现的具体代码由于篇幅太大就不贴了,以上只是个最基本的思路,希望对新手朋友们有所帮助,大神们就不要拍砖了