利用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轻量级ORM框架Peewee访问sqlite数据库的方法详解
Jul 20 Python
Python numpy实现数组合并实例(vstack,hstack)
Jan 09 Python
Python设计模式之建造者模式实例详解
Jan 17 Python
python实现一个简单的udp通信的示例代码
Feb 01 Python
PyQt5实现从主窗口打开子窗口的方法
Jun 19 Python
如何利用Pyecharts可视化微信好友
Jul 04 Python
python  文件的基本操作 菜中菜功能的实例代码
Jul 17 Python
python 下 CMake 安装配置 OPENCV 4.1.1的方法
Sep 30 Python
Pytorch 中retain_graph的用法详解
Jan 07 Python
Python如何截图保存的三种方法(小结)
Sep 01 Python
深入浅析pycharm中 Make available to all projects的含义
Sep 15 Python
python缺失值的解决方法总结
Jun 09 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中判断一个字符串包含另一个字符串的方法
2007/03/19 PHP
WordPress开发中用于标题显示的相关函数使用解析
2016/01/07 PHP
PHP与Ajax相结合实现登录验证小Demo
2016/03/16 PHP
php中html_entity_decode实现HTML实体转义
2018/06/13 PHP
alixixi runcode.asp的代码不错的应用
2007/08/08 Javascript
jquery 清空file域示例(兼容个浏览器)
2013/10/11 Javascript
原生JavaScript实现滚动条效果
2020/03/24 Javascript
用JS生成UUID的方法实例
2016/03/30 Javascript
js将滚动条滚动到指定位置的简单实现方法
2016/06/25 Javascript
js事件驱动机制 浏览器兼容处理方法
2016/07/23 Javascript
web 前端常用组件之Layer弹出层组件
2016/09/22 Javascript
滚动条的监听与内容随着滚动条动态加载的实现
2017/02/08 Javascript
ES6新特性之变量和字符串用法示例
2017/04/01 Javascript
一篇看懂vuejs的状态管理神器 vuex状态管理模式
2017/04/20 Javascript
React Js 微信禁止复制链接分享禁止隐藏右上角菜单功能
2017/05/26 Javascript
原生js实现简单的模态框示例
2017/09/08 Javascript
详解搭建一个vue-cli的移动端H5开发模板
2020/01/17 Javascript
小程序跳转到的H5页面再跳转回跳小程序的方法
2020/03/06 Javascript
antd 表格列宽自适应方法以及错误处理操作
2020/10/27 Javascript
举例讲解Python中的死锁、可重入锁和互斥锁
2015/11/05 Python
详解python进行mp3格式判断
2016/12/23 Python
解决使用PyCharm时无法启动控制台的问题
2019/01/19 Python
基于Python解密仿射密码
2019/10/21 Python
pytorch 实现删除tensor中的指定行列
2020/01/13 Python
提高python代码运行效率的一些建议
2020/09/29 Python
韩国三大免税店之一:THE GRAND 中文免税店
2016/07/21 全球购物
瑞典首都斯德哥尔摩的多元奢侈时尚品牌:Acne Studios
2017/07/09 全球购物
美国Randolph太阳镜官网:美国制造的飞行员太阳镜和射击眼镜
2018/06/15 全球购物
西班牙多品牌鞋店连锁店:Krack
2018/11/30 全球购物
Groupon法国官方网站:特卖和网上购物高达-70%
2019/09/02 全球购物
STRATHBERRY苏贝瑞包包官网:西班牙高级工匠手工打造
2020/11/10 全球购物
优秀员工表扬信
2014/01/17 职场文书
法人单位授权委托书范文
2014/10/06 职场文书
考生诚信考试承诺书
2015/04/29 职场文书
新年晚会开场白
2015/05/29 职场文书
好人好事新闻稿
2015/07/17 职场文书