回复“书籍”便可获赠Python从入门到进阶共10本电子书python
/1 前言/网络
玩爬虫的都避免不了各大网站的反爬措施限制,比较常见的是经过固定时间检测某ip地址访问量来判断该用户是否为 “网络机器人”,也就是所谓的爬虫,若是被识别到,就面临被封ip的风险,那样你就不能访问该网址了。app
通用的解决办法是用代理ip进行爬取,可是收费的代理ip通常都是比较贵的,网上却是有不少免费的代理ip网站,可是受时效性影响,大部分地址都不能用,有不少维护代理ip池的教程,即把爬取并检测后能用代理ip放到“代理池里”,等之后要用的时候再从里面提取,在我看来,这种效率比较低,由于这类IP地址很快就失效,咱们要作的是边检测边使用,充分保证免费IP的时效性。less
/2 抓取IP地址/编辑器
下面就开始实战操做。学习
1.首先咱们随便找一个免费代理ip网站,以下图所示。
二、打开网页查看器,分析其网页元素结构,以下图所示。
三、就是一个简单的静态网页,咱们用requests和bs4将ip地址和对应端口爬下,以下图所示。
四、每一行ip地址都由5个<td>标签组成,而咱们须要的是第一个<td>标签(对应IP地址)和第2个<td>标签(对应端口),因此从第一个开始,每隔5个取出ip地址(item[::5]),从第二个开始,每隔5个取出对应端口(item[1::5]),参数n为页码,每次只在1页取1个有用的ip地址,最终效果以下图所示:
/3 验证IP有效性/
这里把百度百科做为目标网站,这个看似很普通的网站,反爬措施却极为严格,爬不了几条内容就开始请求失败了,下面我以在百度百科查询全国火车站归属地信息为例演示如何使用免费代理ip。
一、首先我在12306上把全部的火车站名都爬下来了,可是没有归属地信息。
二、而后以站名构造百度百科url信息,分析网页元素,把爬取爬取火车站地址信息,网页元素以下图所示:
三、因此,咱们只需在class_='basicInfo-item'的标签内容里查找有无“省”或者“市”的字符,而后输出就好了,最后加一个while True循环,当该ip能正常爬数据时,则break该循环;若该ip被禁,则立刻从新请求一个新ip进行爬取。直接上代码以下图所示:
四、其中for循环是遍历全部火车站,try是用于检测该ip还能不能用,若不能,则在except里请求1个新ip,爬取效果以下图所示:
下次再遇到爬虫被禁的状况就能够用此办法解决了。
/4 结语/
本文基于Python网络爬虫技术,主要介绍了去IP代理网站上抓取可用IP,而且Python脚本实现验证IP地址的时效性,如遇到爬虫被禁的状况就能够用本文的办法进行解决。
关于本文的代码,小编已经上传到github了,后台回复“IP代理”四个字,便可获取代码连接,若是以为不错,记得给个star噢!
------------------- End -------------------
往期精彩文章推荐:

欢迎你们点赞,留言,转发,转载,感谢你们的相伴与支持
想加入Python学习群请在后台回复【入群】
万水千山老是情,点个【在看】行不行
/今日留言主题/
随便说一两句吧~~
本文分享自微信公众号 - Python爬虫与数据挖掘(crawler_python)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。