代理IP现在对于经常使用网络的人来说耳熟能详,目前提供代理IP的网站也有很多,种类齐全,但是质量实在是不敢恭维,所以我们要经过筛选抓取,保存起来供我们使用,不能用的再进行剔除。
维护一个代理池第一步就是要找到提供免费代理的站点,我们需要的就是代理服务器和端口信息,将其爬取下来即可。那么爬取下代理之后怎样保存呢?
首先我们需要确保的目标是可以边取边存,另外还需要定时检查队列中不可用的代理将其剔除,所以需要易于存取。
另外怎样区分哪些是最新的可用的,哪些是旧的,如果用修改时间来标注是可以的,不过更简单的方法就是维护一个队列,只从一端存入,例如右端,这样就能确保最新的代理在队列右端,而在左端则是存入时间较长的代理,如果要取一个可用代理,从队列右端取一个就好了。那么对于队列的左端,不能让它一直老化下去,还需要做的操作就是定时从队列左端取出代理,然后进行检测,如果可用,重新将其加入右端。通过以上操作,就保证了代理一直是最新可用的。
所以目前来看,既能高效处理,又可以做到队列动态维护,合适的方法就是利用Redis数据库的队列。可以定义一个类来维护一个redis队列,比如get方法是批量从左端取出代理,put方法是从右端放入可用代理,pop方法是从右端取出最新可用代理。