首发于 Python数据分析

采集免费ip,制作自己的代理ip池

我们在爬取网站的时候经常会遇到突然访问不了的问题,原因之一是因为你的ip进了该站的黑名单,在某一段时间内不能访问该站的资源。那么该怎么解决这个问题?比较有效的方式是使用代理ip,而如果有一个自己的代理ip池,妈妈再也不用担心我没有ip可用啦。

github传送门0( xici代理ip池)

西刺网(传送门1 国内高匿)是一个免费代理ip资源比较多的站,本文就从西刺网获取ip,制作代理ip池。

打开(传送门1)可见到如下页面


有俩千多页代理ip,,当然这是按时间排序的,我估计越到后面的ip可能就没啥用了.

分析该页面的源码


很简单的发现,所有的代理ip信息都在table下,每一个tr都是一条ip的信息。那这就比较简单了,分分钟来一个漂亮的正则来将需要的信息匹配出来(这里我匹配的有ip地址,端口,类型,服务器地址,是否匿名)

编写xc.py

正则表达式(个人觉得这应该是本程序最精华的部分)的使用如下

\d匹配数字,\d+匹配多个数字 (\d+) 这里匹配端口号

[A-Z]匹配大写字母,[A-Z]+匹配多个大写字母 这里匹配的是类型

.匹配单个任意字符,*匹配前面字符0到多次,?匹配前面0到一次,(.*?)匹配任意字符

如果你对正则表达式不是很熟悉,你可以在这里(传送门2 菜鸟教程)进行这方面的学习。

下面编写请求头

第一个self.headers是下载页面的请求头,self.proxyHeaders是后面验证ip是否可用的请求头。

下面是下载页面和正则匹配的函数

根据上面的代码,就可以将代理ip从西刺站拿下来,接下来检验是否有效。

requests是一个非常有用的库,这里也将使用它进行校验

i 是 ('110.73.48.247', '8123', 'HTTP') 类数据

为了保证校验的可靠性,我把每次校验设置超时5s。


如此就能拿到新鲜免费的代理ip了,为了使得ip能多次使用,我将其存入mysql数据库中。

写入代码如下

读取代码如下

最后来看下使用效果:

编写demo.py 再导入xc.py 中的xiciSpider类

首先你需要从西刺网将ip爬取到自己数据库中,然后再从数据库中提取有用的ip

第二次可直接使用getAccessIP方法来获取可用ip.


最后奉上完整代码 github传送门0( xici代理ip池),觉得有用的不妨点个star

两个鬼故事哪家装修公司好三才五格起名速成ftp服务器软件起名字生辰八字起名免费网络平台起名字大全武汉东湖大学起名用8划的汉字五行火字属性的字大全起名3月24日独特的近义词魏姓男孩起名科技照明公司起名大全常州遮阳棚专业起名推荐优名起名网安康起名字japanesepussy北鼻是什么意思protools支付宝提现什么意思起名成语什么意思好的公司随机起名生成器互联网行业起名竟价排名全国加盟给远方亲人的一封信童姓取名起名大全儒道丑娘的演员叫什么名字长津湖电影在线观看少年生前被连续抽血16次?多部门介入两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”淀粉肠小王子日销售额涨超10倍高中生被打伤下体休学 邯郸通报单亲妈妈陷入热恋 14岁儿子报警何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言张家界的山上“长”满了韩国人?男孩8年未见母亲被告知被遗忘中国拥有亿元资产的家庭达13.3万户19岁小伙救下5人后溺亡 多方发声315晚会后胖东来又人满为患了张立群任西安交通大学校长“重生之我在北大当嫡校长”男子被猫抓伤后确诊“猫抓病”测试车高速逃费 小米:已补缴周杰伦一审败诉网易网友洛杉矶偶遇贾玲今日春分倪萍分享减重40斤方法七年后宇文玥被薅头发捞上岸许家印被限制高消费萧美琴窜访捷克 外交部回应联合利华开始重组专访95后高颜值猪保姆胖东来员工每周单休无小长假男子被流浪猫绊倒 投喂者赔24万小米汽车超级工厂正式揭幕黑马情侣提车了西双版纳热带植物园回应蜉蝣大爆发当地回应沈阳致3死车祸车主疑毒驾恒大被罚41.75亿到底怎么缴妈妈回应孩子在校撞护栏坠楼外国人感慨凌晨的中国很安全杨倩无缘巴黎奥运校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变王树国卸任西安交大校长 师生送别手机成瘾是影响睡眠质量重要因素国产伟哥去年销售近13亿阿根廷将发行1万与2万面值的纸币兔狲“狲大娘”因病死亡遭遇山火的松茸之乡“开封王婆”爆火:促成四五十对奥巴马现身唐宁街 黑色着装引猜测考生莫言也上北大硕士复试名单了德国打算提及普京时仅用姓名天水麻辣烫把捣辣椒大爷累坏了

两个鬼故事 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化