手把手教你用免费代理ip爬数据
作者:Python进阶者
来源:Python爬虫与数据挖掘
/1 前言/
玩爬虫的都避免不了各大网站的反爬措施限制,比较常见的是通过固定时间检测某ip地址访问量来判断该用户是否为 “网络机器人”,也就是所谓的爬虫,如果被识别到,就面临被封ip的风险,那样你就不能访问该网址了。
通用的解决办法是用代理ip进行爬取,但是收费的代理ip一般都是比较贵的,网上倒是有很多免费的代理ip网站,但是受时效性影响,大部分地址都不能用,有很多维护代理ip池的教程,即把爬取并检测后能用代理ip放到“代理池里”,等以后要用的时候再从里面提取,在我看来,这种效率比较低,因为这类IP地址很快就失效,我们要做的是边检测边使用,充分保证免费IP的时效性。
/2 抓取IP地址/
下面就开始实战操作。
1.首先我们随便找一个免费代理ip网站,如下图所示。
2、打开网页查看器,分析其网页元素结构,如下图所示。
3、就是一个简单的静态网页,我们用requests和bs4将ip地址和对应端口爬下,如下图所示。
4、每一行ip地址都由5个<td>标签组成,而我们需要的是第一个<td>标签(对应IP地址)和第2个<td>标签(对应端口),所以从第一个开始,每隔5个取出ip地址(item[::5]),从第二个开始,每隔5个取出对应端口(item[1::5]),参数n为页码,每次只在1页取1个有用的ip地址,最终效果如下图所示:
/3 验证IP有效性/
这里把百度百科作为目标网站,这个看似很普通的网站,反爬措施却极为严格,爬不了几条内容就开始请求失败了,下面我以在百度百科查询全国火车站归属地信息为例演示如何使用免费代理ip。
1、首先我在12306上把所有的火车站名都爬下来了,但是没有归属地信息。
2、然后以站名构造百度百科url信息,分析网页元素,把爬取爬取火车站地址信息,网页元素如下图所示:
3、所以,我们只需在class_='basicInfo-item'的标签内容里查找有无“省”或者“市”的字符,然后输出就行了,最后加一个while True循环,当该ip能正常爬数据时,则break该循环;若该ip被禁,则马上重新请求一个新ip进行爬取。直接上代码如下图所示:
4、其中for循环是遍历所有火车站,try是用于检测该ip还能不能用,若不能,则在except里请求1个新ip,爬取效果如下图所示:
下次再遇到爬虫被禁的情况就可以用此办法解决了。
/4 结语/
本文基于Python网络爬虫技术,主要介绍了去IP代理网站上抓取可用IP,并且Python脚本实现验证IP地址的时效性,如遇到爬虫被禁的情况就可以用本文的办法进行解决。
---------End---------
关注后回复“w”,加我私人微信
“分享”和“在看”是更好的支持!
手把手教你用免费代理ip爬数据相关推荐
- 高可用免费代理ip爬取实战
我们在使用爬虫的时候,会对代理ip有一定程度的需求.今天爬取的这个免费代理网站不是大家已经爬烂的西刺和66等代理网站,是我无意间发现的~ 这个网站还是有一点意思的. 注意到没有,这里的ip地址被换成了 ...
- 蚂蚁代理免费代理ip爬取(端口图片显示+token检查)
分析 蚂蚁代理的列表页大致是这样的: 端口字段使用了图片显示,并且在图片上还有各种干扰线,保存一个图片到本地用画图打开观察一下: 仔细观察蓝色的线其实是在黑色的数字下面的,其它的干扰线也是,所以这幅图 ...
- golang爬取免费代理IP
golang爬取免费的代理IP,并验证代理IP是否可用 这里选择爬取西刺的免费代理Ip,并且只爬取了一页,爬取的时候不设置useAgent西刺不会给你数据,西刺也做反爬虫处理了,所以小心你的IP被封掉 ...
- 多线程爬取免费代理ip池 (给我爬)
多线程爬取免费代理ip池 (给我爬) 文章目录 多线程爬取免费代理ip池 (给我爬) 安装的库 IP 隐藏 代理ip 多线程爬取 读入代理ip 写入代理ip 验证代理ip 解析网页得到代理ip 获取网 ...
- Python爬虫:爬取免费代理ip
之前写的几个爬虫都只能爬取到少量的信息,这是由于一个ip频繁地访问网站,会被认定为非正常的爬虫从而被屏蔽,这时候就需要使用代理ip来访问网站了,具体方法就是在发送request时添加一个proxy参数 ...
- 爬取小舒代理免费代理IP,并验证IP是否有效
爬虫爬取免费代理ip,验证代理ip有效性,保存到本地txt,建立代理池 使用多线程+队列+正则匹配,对免费代理ip网站和查询自身ip网站(验证代理ip是否有效)发送请求,如果代理ip为有效,保存至本地 ...
- 简易爬取免费代理IP
爬取maitian屡次被封,先建立一个免费代理ip池吧 暂时保存为txt格式 思路: 1.找到免费的ip代理网站 以西刺代理的4个网站为例: 国内普通代理: http://www.xicidaili. ...
- 爬取免费代理IP并测试
爬取免费代理IP并测试 写在开头:这次总共爬了三个代理ip的网站,前两个网站经过测试,ip并不能访问我真正想爬的网站 Git仓库:https://gitee.com/jiangtongxueya/my ...
- 手把手教你使用scrapy框架来爬取北京新发地价格行情(理论篇)
点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 博观而约取,厚积而薄发. 大家好! ...
最新文章
- python3 报错 TypeError: load() got an unexpected keyword argument ‘encoding‘ 解决方法
- 【Java代码】道格拉斯-普克 Douglas-Peucker 抽稀算法分析及15w个坐标点抽稀到3.7w耗时从360s+优化到365ms接近1000倍的速度提升源码分享(并行流+多线程+泛型)
- ztree 自定义参数_Ztree节点前加上两个自定义按钮
- 【CodeForces - 1197C】Array Splitting(水题)
- c语言实现图片卷积_卷积神经网络(CNN)Python的底层实现——以LeNet为例
- java文件读取的总结_java 读取文件方法的总结
- Flash务实主义——Loading
- 在线Javascript压缩工具
- Shiro学习(23)多项目集中权限管理
- 关于DIPS的MVC 4.0项目发布与在IIS 7.0上的部署的方法
- android modbus 串口,手机Modbus 安卓Modbus调试软件
- 【测试报告】模板:迭代测试报告
- JavaScript自动切换并播放视频 | Tampermonkey
- oracle exclude table,【DATAPUMP】导出时使用exclude排除表
- python中shelf对象_11.4. shelve — Python 对象持久化 — Python 2.7.18 文档
- Teams Bot App 用户互动
- Ubuntu 卸载程序
- 龙门标局:白炽灯商标转让所在的类别属于第几类?
- 【英译中】如何拍好沙滩照2——2014年7月24日
- python3GUI--翻译器By:PyQt5(附源码)