首页 > 编程知识 正文

代理ip爬虫,python ip代理池

时间:2023-05-06 20:30:03 阅读:37589 作者:414

众所周知,现在很多网站的服务器数据都不想轻易被别人抓住,如果一个平坦的台灯爬虫程序太“霸道”,一些小工厂的服务器也很容易被卡死。 相对于这些,典型的服务器会设置以下反爬策略: 其中有效的逆爬策略是对来访者的IP进行相关的阈值限制。 例如,如果IP访问速度太快,超过设定的阈值,网站就会识别为爬行器程序,而不是用户的行为,从而阻止IP。 轻则几小时,重则永远封杀。

但是爬虫程序的设计者需要使用多个IP地址才能阻止IP或快速获取数据。 现在互联网上有很多IP代理服务可以提供可靠性和稳定性,但基本上是收费的,价格也不高。 以下编辑介绍自己是如何创建免费代理IP池的。

一、设计思路

免费访问提供代理IP的网站,提取一定数量的IP,验证这些IP的可用性,并为爬虫保存。 由于免费的IP代理站点的IP可用性和稳定性较低,因此需要大量爬网程序才能获取一些可用的IP。

二.开发环境

Python3.6.1,IDE为pycharm,系统为win10。 主要使用的库:请求、re。 在验证IP可用性时,由于单进程效率较低,小编最后使用多进程进程池Pool提供了程序效率。 打开工艺池不是本文的重点,所以很少介绍。

三.设计流程

1、攀登"西刺代理"

这里需要说明以下内容。 西刺代理提供API接口,但15分钟更新。 想快速抓住大量IP的情况下很难使用。 另外,这些免费IP的时效性很短,所以必须快速抓住并快速使用。 否则,很容易失效。 西刺提供的这个API几乎没有用,往往需要攀登,没有起到减轻服务器压力的作用。

打开西刺代理商免费的“高隐藏”服务选项,观察web源代码。 下图:

西刺很厚道很有良心啊。 非常简单的源代码,爬起来也很容易。 IP地址、端口、协议等信息均位于标签table下,属性IP位于ip_list下,且一次性加载,不存在动态加载。 另外,api也不抓住就显示在地址栏中,只需替换页面即可。 第一页API:http://www.xici daili.com/nn/1,后续页只需调换最后一个数字即可。 因为编辑很懒,非常懒…所以用正则re匹配了所有符合的内容。 xpath、beautifulsoup等方法也有很多。 选择自己擅长的就可以了。 抓取和筛选并不复杂。 编辑直接粘贴自己的代码。

确定,这个函数的参数是yeshu,所以可以输入选择爬第几页。 当然,如果你只爬一页,最好爬第一页。 因为第一页的IP比较新,时效性和稳定性好。 爬上第一页的结果如下。

很容易就得到了100个IP。 这里需要说明。 在上面的代码中,proxy是用format函数设置的存储格式,例如,“HTTP#122.114.31.177:808”协议和地址端口按#分开存储。 以后使用的时候只需要split就可以了。

爬山函数设置完成后,接下来必须验证这些IP的可用性。

2、测试IP可用性

怎么测试IP是否可用? 小编的构想是使用这个IP访问认证网站,查看返回的网络状态代码。 (我在上一篇文章中说过。 ) 200表示访问成功,IP有效。 如果访问错误或返回的状态代码不是200,则IP不可用。 要在此设置访问超时限制,请根据自己的需要。 否则,一些代理的ip稳定性差,访问一个网页需要5-10s。 这样的话,留下ip就没有意义了。

需要注意的是,这里的验证站点必须选择服务器强大且稳定的站点,而不惧怕攀登。 有这样的网站吗? 当然有。 而且是大工厂。 是https://www.baidu.com

这个测试部分的代码也不难,所以直接放了代码。 不明白的地方请看评论

执行结果如下。

嗯,免费毕竟是免费的,100个里面可以使用几个ip,所以需要爬很多,验证很多。 在调试过程中,编辑发现此验证的速度真的很慢,因此利用进程池pool启动了多进程。 我开始了十个过程,因为这是四核心计算机。 遵循基本的“核数*2”原则。 多进程启动后,效率明显提高了8-10倍左右。

3、整合代码

虽然这里很少讨论多进程和进程池的内容,但我们将打开后续的单独文章进行记录。 我直接贴上了我整合后的源代码。 仅供参考:

以上程序打开了10个流程,攀登了西刺代理网站中高隐藏IP的前50页。 速度很快,大约五分钟就全部爬完了。 另外,要在这里开始更多的过程,需要注意自己的宽带带宽。 如果开始太多的过程,如果达到你的带宽限制,求爱后可能会返回空白页,反而会影响爬虫的效率。

上面的程序执行的结果如下,还是可以使用一定数量的IP,基本上可以满足个人的使用。

四.总结

通过这种方法,可以实现基本上免费的个人代理ip池。 这些免费ip的稳定性较差,建议在爬行器使用之前再次验证。 很容易实现,可以直接调用自己写的测试函数。

还有,爬西刺代理的时候要注意速度。 在此期间,编辑打开了50个进程进行攀登…结果,ip被关闭了。 不,所有爬行动物的时候都要适当降速。

文明爬行动物,从我开始。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。