python爬虫从ip池获取随机IP
ip池里有很多ip,有些不能正常使用。当出现错误时,我们可以重新请求其他ip。
1、获取模块,定期爬虫抓取各大代理网站的代理。
代理商可以是付费,也可以是免费。代理形式:IP+端口。抓取成功后,可用代理将被保存在数据库中。
2、存储模块,负责存储和爬虫抓取代理。
确保代理不重复,识别代理的可用性,动态实时处理无代理,使用Redis的SortedSet,即有序集合。
3、检验模块,定期检测数据库中的代理。
设置检测链接,最好爬哪个网站,这样更有针对性。
如为通用代理,可设置百度等链接进行检测。此外,还需要标记每个代理的状态,
例如设置分数标识。100分代表可用,分数越少越不可用。如果代理可以一次检测,立即将分数标识设置为100,或者在原基础上加1分;
如果代理不能使用,将分数标识减少1分。当分数减少到一定值时,代理直接从数据库中移除。代理的可用性可以通过识别分数来识别。
4、接口模块,需要API提供对外服务的界面。
事实上,数据库可以直接连接以获取相应的数据,但是需要了解数据库的连接信息,并匹配连接。
更安全的方法是提供WebAPI接口。可用代理可以通过访问界面获得。这样可以保证每个可用代理都能获得,实现负载平衡。
python迭代器和生成器的总结:说明1、容器是可迭代对象,可迭代对象调用iter()函数,可以得到迭代器。迭代器可以通过next()函数获得下一个元素,从而支持遍历。2、生成器是一种特殊的迭代器。使用生成器,可以写出更清晰的代码;合理使用 ...