利用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 相关文章推荐
Python3 入门教程 简单但比较不错
Nov 29 Python
python实现无证书加密解密实例
Oct 27 Python
Python中用于返回绝对值的abs()方法
May 14 Python
Python中使用OpenCV库来进行简单的气象学遥感影像计算
Feb 19 Python
Python基于生成器迭代实现的八皇后问题示例
May 23 Python
Python实现最大子序和的方法示例
Jul 05 Python
Django缓存系统实现过程解析
Aug 02 Python
DJANGO-URL反向解析REVERSE实例讲解
Oct 25 Python
Python常用模块logging——日志输出功能(示例代码)
Nov 20 Python
使用PyTorch实现MNIST手写体识别代码
Jan 18 Python
Python 把两层列表展开平铺成一层(5种实现方式)
Apr 07 Python
Pytest中conftest.py的用法
Jun 27 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处理换行符的问题 \r\n
2013/06/13 PHP
一致性哈希算法以及其PHP实现详细解析
2013/08/24 PHP
PHP常用技巧汇总
2016/03/04 PHP
thinkphp验证码的实现(form、ajax实现验证)
2016/07/28 PHP
thinkPHP js文件中U方法不被解析问题的解决方法
2016/12/05 PHP
php慢查询日志和错误日志使用详解
2021/02/27 PHP
Dom加载让图片加载完再执行的脚本代码
2008/05/15 Javascript
JQuery UI DatePicker中z-index默认为1的解决办法
2010/09/28 Javascript
javascript打印大全(打印页面设置/打印预览代码)
2013/03/29 Javascript
固定表格行列(expression)在IE下适用
2013/07/25 Javascript
JS获取各种浏览器窗口大小的方法
2014/01/14 Javascript
jquery实现的Banner广告收缩效果代码
2015/09/02 Javascript
jQuery实现的调整表格行tr上下顺序
2016/01/10 Javascript
jquery实现界面无刷新加载登陆注册
2016/07/30 Javascript
javascript中的 object 和 function小结
2016/08/14 Javascript
JavaScript面试题(指针、帽子和女朋友)
2016/11/23 Javascript
关于JavaScript的单双引号嵌套问题
2017/08/20 Javascript
JavaScript中递归实现的方法及其区别
2017/09/12 Javascript
微信小程序实现原生步骤条
2019/07/25 Javascript
vue实现中部导航栏布局功能
2019/07/30 Javascript
[05:49]2014DOTA2TI4正赛第二日综述 昔日冠军纷纷落马 VG LGD占尽先机
2014/07/20 DOTA
python随机生成指定长度密码的方法
2015/04/04 Python
在Python中封装GObject模块进行图形化程序编程的教程
2015/04/14 Python
Python中变量的输入输出实例代码详解
2019/07/28 Python
django 文件上传功能的相关实例代码(简单易懂)
2020/01/22 Python
PyCharm中如何直接使用Anaconda已安装的库
2020/05/28 Python
如何解决安装python3.6.1失败
2020/07/01 Python
获取python运行输出的数据并解析存为dataFrame实例
2020/07/07 Python
CSS3教程(6):创建网站多列
2009/04/02 HTML / CSS
Bravofly德国:预订廉价航班和酒店
2019/09/22 全球购物
天逸系统(武汉)有限公司Java笔试题
2015/12/29 面试题
图书馆标语
2014/06/19 职场文书
教师党员个人自我剖析材料
2014/09/29 职场文书
2015年世界无车日活动总结
2015/03/23 职场文书
爱国主义教育基地观后感
2015/06/18 职场文书
使用feign服务调用添加Header参数
2021/06/23 Java/Android