当前位置: 首页 > 科技观察

教你使用免费代理IP爬取数据

时间:2023-03-20 17:58:10 科技观察

一、前言玩爬虫的都逃不过各大网站反爬措施的限制。比较常见的判断用户是否为“网络机器人”,也就是所谓的爬虫,一旦被识别,将面临被封IP的风险,使您无法访问网站。一般的解决办法是使用代理ip来爬取,但是付费的代理ip一般都比较贵。网上有很多免费代理ip的网站,但是由于时效性原因,大部分地址都不能用,还有很多维护代理ip池的教程就是爬取后把代理ip放到“代理池”中和检测,然后在后面使用的时候从中提取出来。在我看来,这种效率是比较低的,因为这样的IP地址很快就会失效。我们需要做的是一边测试一边使用,充分保证免费IP的时效性。2.抓取IP地址开始下面的实际操作。1、首先我们随机找一个免费代理ip的网站,如下图。2、打开网页查看器,分析其网页元素结构,如下图所示。3.是一个简单的静态网页。我们使用requests和bs4来爬取ip地址和对应的端口,如下图所示。4.每行ip地址由5个标签组成,我们需要的是第一个标签(对应IP地址)和第二个标签(对应端口),所以从第一个开始,取出ip每隔5个地址(item[::5]),从第二个开始,每隔5个取出对应的端口(item[1::5]),参数n为页码,只取一个有用的ipon每次一个页面的地址,最终效果如下图所示:3.验证IP的合法性。这里使用百度百科作为目标网站。这个看似普通的网站,却有着极其严格的反爬虫措施。爬了几条内容后,请求失败。下面我将以百度百科查询全国火车站信息为例,来演示如何使用免费代理ip。1、首先我在12306上爬取了所有的火车站名称,但是没有任何归属信息。2.然后利用站名构建百度百科url信息,分析网页元素,抓取爬取火车站地址信息。网页元素如下图所示:3、因此我们只需要添加class_='basicInfo-item'的标签,查找内容中是否有“省”或“市”的字符,然后输出它。最后,添加一个whileTrue循环。当ip可以正常爬取数据时,断环;如果该ip被ban了,立即重启请求新的ip进行爬取。直接上传代码如下图:4.for循环遍历所有火车站,用try检查ip是否还能用。如果没有,在except中请求一个新的ip,爬取效果如下图提示:下次遇到爬虫被禁止的情况可以用这个方法解决。4.结语本文基于Python网络爬虫技术。主要介绍如何在IP代理网站上抓取可用IP,Python脚本实现IP地址校验的时效性。如果遇到爬虫被ban的情况,可以使用本文的方法解决。.