我们在做爬虫的时候,不可避免的会遇到各种各样的反黑客措施,其中最常见的就是服务器识别特定时间内对某个ip地址的访问次数,如果超过阈值,就会被判断为“网络机器人”,然后会返回403或者其他一些奇怪的数据。这里有一个小例子来介绍一个非常有效的解决方案:
00-1010以抓取美团某火锅店的评论数据为例。
总共有849页的评论。评论数据的界面和参数如下。
使用下面的请求来模拟请求。
参数偏移量控制注释页数,返回的结果如下:
前几十页仍然可以正常返回数据,然后返回错误页。
第一步:应用场景
遇到了这种问题,使用代理ip就是一个很好的解决方案。我们可以选择付费代理ip,稳定实用,但是价格有点贵。粘贴代理ip价格图。对于一般学生党来说,还是很不情愿的。
幸运的是,现在有很多免费的代理ip网站,如下图所示。
这是一个免费的代理ip网站,但是有很多ip地址不能使用,所以我们可以用python编写一个函数来抓取ip地址并验证它是否可用,并在程序中引用这个函数来抓取美国使团的评论。一旦最后一个代理ip失败,我们将立即访问该功能,并获得一个新的可用代理ip,这相当于代理ip的api。
00-1010 1.分析代理ip网站,这是一个简单的静态网页。直接用请求获取静态网页,然后用Beatifulsoup进行分析。
2.爬网ip地址
这里有一个分析网页的技巧。首先,我使用find_all来查找所有标记为tr的网页。然后,在此基础上,我使用find_all来查找这个结构中的所有td标签。取出IP地址和端口非常方便,比xpath简单多了。
3.验证ip地址
这一步比较容易理解,就是用上面爬下来的地址作为代理ip,先测试是否能用,能用的话直接返回美团评论的爬虫程序。
第二步:解决思路
这段代码意味着,如果使用代理ip成功模拟请求,break将跳出循环,否则,它将再次循环并再次请求新的ip地址,直到请求可以通过。
总结:本文主要介绍免费代理ip的使用方法,只适用于数据量相对较小、稳定性要求较低的情况,否则仍需使用付费ip。
请在python Crawler和数据分析的后台获取源代码。