利用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数据库操作常用功能使用详解(创建表/插入数据/获取数据)
Dec 06 Python
Python素数检测的方法
May 11 Python
用ReactJS和Python的Flask框架编写留言板的代码示例
Dec 19 Python
Python for Informatics 第11章之正则表达式(四)
Apr 21 Python
Python处理Excel文件实例代码
Jun 20 Python
对pyqt5之menu和action的使用详解
Jun 20 Python
python实现屏保程序(适用于背单词)
Jul 30 Python
解决python3 安装不了PIL的问题
Aug 16 Python
TensorFlow的reshape操作 tf.reshape的实现
Apr 19 Python
Python colormap库的安装和使用详情
Oct 06 Python
详解Python利用configparser对配置文件进行读写操作
Nov 03 Python
Python NumPy灰度图像的压缩原理讲解
Aug 04 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判断变量的函数
2012/04/24 PHP
PHP爆绝对路径方法收集整理
2012/09/17 PHP
PHP header()函数常用方法总结
2014/04/11 PHP
php中用memcached实现页面防刷新功能
2014/08/19 PHP
php使用Cookie实现和用户会话的方法
2015/01/21 PHP
php使用Jpgraph绘制饼状图的方法
2015/06/10 PHP
PHP实现限制IP访问及提交次数的方法详解
2017/07/17 PHP
php curl上传、下载、https登陆实现代码
2017/07/23 PHP
jQuery+ajax实现顶一下,踩一下效果
2010/07/17 Javascript
jsTree 基于JQuery的排序节点 Bug
2011/07/26 Javascript
Jquery异步请求数据实例代码
2011/12/28 Javascript
js网页版计算器的简单实现
2013/07/02 Javascript
javascript动态控制服务器控件实例
2014/09/05 Javascript
jQuery中slideUp()方法用法分析
2014/12/24 Javascript
js事件驱动机制 浏览器兼容处理方法
2016/07/23 Javascript
JS实现页面载入时随机显示图片效果
2016/09/07 Javascript
详谈for循环里面的break和continue语句
2017/07/20 Javascript
微信小程序实现跟随菜单效果和循环嵌套加载数据
2017/11/21 Javascript
JavaScript实现身份证验证代码实例
2019/08/26 Javascript
微信小程序仿淘宝热搜词在搜索框中轮播功能
2020/01/21 Javascript
Python在不同目录下导入模块的实现方法
2017/10/27 Python
Python实现比较扑克牌大小程序代码示例
2017/12/06 Python
Python实现随机创建电话号码的方法示例
2018/12/07 Python
python将字符串转换成json的方法小结
2019/07/09 Python
python中将两组数据放在一起按照某一固定顺序shuffle的实例
2019/07/15 Python
python从zip中删除指定后缀文件(推荐)
2019/12/05 Python
Python多线程通信queue队列用法实例分析
2020/03/24 Python
零基础学Python之前需要学c语言吗
2020/07/21 Python
自荐书格式
2013/12/01 职场文书
酒店前台接待岗位职责
2013/12/03 职场文书
学生会招新策划书
2014/02/14 职场文书
职业培训师职业生涯规划
2014/02/18 职场文书
优秀家长自荐材料
2014/08/26 职场文书
农村党支部书记四风问题个人对照检查材料
2014/09/21 职场文书
领导干部作风整顿剖析材料
2014/10/11 职场文书
Mysql Innodb存储引擎之索引与算法
2022/02/15 MySQL