利用Python爬取可用的代理IP


Posted in Python onAugust 18, 2016

前言

就以最近发现的一个免费代理IP网站为例:http://www.xicidaili.com/nn/。在使用的时候发现很多IP都用不了。

所以用Python写了个脚本,该脚本可以把能用的代理IP检测出来。

脚本如下:

#encoding=utf8
import urllib2
from bs4 import BeautifulSoup
import urllib
import socket
 
User_Agent = 'Mozilla/5.0 (Windows NT 6.3; WOW64; rv:43.0) Gecko/20100101 Firefox/43.0'
header = {}
header['User-Agent'] = User_Agent
 
'''
获取所有代理IP地址
'''
def getProxyIp():
 proxy = []
 for i in range(1,2):
  try:
   url = 'http://www.xicidaili.com/nn/'+str(i)
   req = urllib2.Request(url,headers=header)
   res = urllib2.urlopen(req).read()
   soup = BeautifulSoup(res)
   ips = soup.findAll('tr')
   for x in range(1,len(ips)):
    ip = ips[x]
    tds = ip.findAll("td")
    ip_temp = tds[1].contents[0]+"\t"+tds[2].contents[0]
    proxy.append(ip_temp)
  except:
   continue
 return proxy
  
'''
验证获得的代理IP地址是否可用
'''
def validateIp(proxy):
 url = "http://ip.chinaz.com/getip.aspx"
 f = open("E:\ip.txt","w")
 socket.setdefaulttimeout(3)
 for i in range(0,len(proxy)):
  try:
   ip = proxy[i].strip().split("\t")
   proxy_host = "http://"+ip[0]+":"+ip[1]
   proxy_temp = {"http":proxy_host}
   res = urllib.urlopen(url,proxies=proxy_temp).read()
   f.write(proxy[i]+'\n')
   print proxy[i]
  except Exception,e:
   continue
 f.close()
 
    
if __name__ == '__main__':
 proxy = getProxyIp()
 validateIp(proxy)

 运行成功后,打开E盘下的文件,可以看到如下可用的代理IP地址和端口:

利用Python爬取可用的代理IP

总结

这只是爬取的第一页的IP地址,如有需要,可以多爬取几页。同时,该网站是时时更新的,建议爬取时只爬取前几页的即可。以上就是本文的全部内容,希望对大家学习使用Python能有所帮助。

Python 相关文章推荐
Python最基本的输入输出详解
Apr 25 Python
Python简单计算数组元素平均值的方法示例
Dec 26 Python
Windows下python3.7安装教程
Jul 31 Python
python使用pipeline批量读写redis的方法
Feb 18 Python
详解python--模拟轮盘抽奖游戏
Apr 12 Python
Python 3.6 -win64环境安装PIL模块的教程
Jun 20 Python
python实现两个文件夹的同步
Aug 29 Python
python selenium循环登陆网站的实现
Nov 04 Python
pytorch之inception_v3的实现案例
Jan 06 Python
python的reverse函数翻转结果为None的问题
May 11 Python
详解Pycharm与anaconda安装配置指南
Aug 25 Python
Python基于pillow库实现生成图片水印
Sep 14 Python
总结用Pdb库调试Python的方式及常用的命令
Aug 18 #Python
Python实现命令行通讯录实例教程
Aug 18 #Python
Python采用Django开发自己的博客系统
Sep 29 #Python
浅析Python中元祖、列表和字典的区别
Aug 17 #Python
Python+django实现简单的文件上传
Aug 17 #Python
Python Django使用forms来实现评论功能
Aug 17 #Python
小小聊天室Python代码实现
Aug 17 #Python
You might like
php计算整个目录大小的方法
2015/06/01 PHP
常用PHP数组排序函数归纳
2016/08/08 PHP
PHP实现与java 通信的插件使用教程
2019/08/11 PHP
javascript instanceof,typeof的区别
2010/03/24 Javascript
javascript运行机制之this详细介绍
2014/02/07 Javascript
JS实现一个列表中包含上移下移删除等功能
2014/09/24 Javascript
iframe里使用JavaScript控制主页转向的方法
2015/04/03 Javascript
javascript中callee与caller的区别分析
2015/04/20 Javascript
javascript通过元素id和name直接取得元素的方法
2015/04/28 Javascript
在Mac OS下使用Node.js的简单教程
2015/06/24 Javascript
Jquery zTree 树控件异步加载操作
2016/02/25 Javascript
AngularJS优雅的自定义指令
2016/07/01 Javascript
Vue概念及常见命令介绍(1)
2016/12/08 Javascript
微信小程序点击控件修改样式实例详解
2017/07/07 Javascript
基于layui数据表格以及传数据的方式
2018/08/19 Javascript
vue列表数据发生变化指令没有更新问题及解决方法
2020/01/16 Javascript
微信小程序实现弹幕墙(祝福墙)
2020/11/18 Javascript
vue实现轮播图帧率播放
2021/01/26 Vue.js
使用python BeautifulSoup库抓取58手机维修信息
2013/11/21 Python
Python中类的继承代码实例
2014/10/28 Python
python保存字符串到文件的方法
2015/07/01 Python
在python中使用xlrd获取合并单元格的方法
2018/12/26 Python
对numpy下的轴交换transpose和swapaxes的示例解读
2019/06/26 Python
python自动化测试之如何解析excel文件
2019/06/27 Python
pycharm激活码有效到2020年11月底
2020/09/18 Python
Python matplotlib图例放在外侧保存时显示不完整问题解决
2020/07/28 Python
python中time tzset()函数实例用法
2021/02/18 Python
使用CSS3来匹配横屏竖屏的简单方法
2015/08/04 HTML / CSS
韩国美国时尚服装和美容在线全球市场:KOODING
2018/11/07 全球购物
Sport-Thieme荷兰:购买体育用品
2019/08/25 全球购物
.NET概念性的面试题
2012/02/29 面试题
创业计划书的主要内容有哪些
2014/01/29 职场文书
2015年全国保险公众宣传日活动方案
2015/05/06 职场文书
少年犯观后感
2015/06/11 职场文书
Pandas加速代码之避免使用for循环
2021/05/30 Python
SpringBoot详解整合Redis缓存方法
2022/07/15 Java/Android