/1前言/
玩爬虫的人都躲不过各大网站的反爬虫措施。常见的通过固定时间检查一个ip地址的流量来判断用户是否是“网络机器人”,也就是所谓的爬虫。如果被识别,将面临被ip屏蔽的风险,你无法访问网站。
一般的解决办法是用代理ip抓取,但是收费的代理ip一般比较贵。网上有很多免费的代理ip网站,但是由于时效性的原因,大部分地址都无法使用。有很多维护代理ip池的教程,就是把爬取测试后可以使用的代理ip放入“代理池”,以后需要的时候再从中提取。在我看来,这种效率是比较低的,因为这种IP地址很快就会失效。
/2获取IP地址/
开始实际操作吧。
1.首先我们随便找一个免费代理ip的网站,如下图所示。
2.打开网页浏览器,分析其网页元素结构,如下图所示。
3.这是一个简单的静态网页。我们使用requests和bs4来爬下ip地址和相应的端口,如下图所示。
4.每行ip地址由五个组成
/3验证IP有效性/
这里,百度百科是目标网站。这个看似普通的网站,却有着极其严格的防爬措施。爬了几段内容后,请求失败。下面,我就以百度百科为例,演示一下如何使用免费代理ip。
1.首先,我在12306上爬下了所有的火车站名,但是没有归属地信息。
2.然后用站名构造百度百科的url信息,分析网页元素,抓取火车站的地址信息。网页元素如下图所示:
3.因此,我们只需要设置class _ = & # 39basic info-item & # 39;在标签内容中查找“省”或“市”的字符,然后输出。最后,添加一个while True循环。当ip可以正常爬升数据时,中断环路;如果该ip被禁止,立即请求一个新的ip进行爬网。直接代码如下图所示:
4.for循环是遍历所有火车站,try是检测ip是否可用。如果没有,在except中请求一个新的ip,抓取效果如下图所示:
下一次禁止爬行动物,可以用这个方法解决。
/4结论/
基于Python网络爬虫技术,主要介绍如何从IP代理网站抓取可用IP,以及如何通过Python脚本验证IP地址的时效性。如果爬虫被禁止,可以用这个方法解决问题。
关于这篇文章的代码,边肖已经上传到了github。后台回复“IP代理”字样即可获得代码链接。如果觉得好,记得给个星!