利用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 字符串中的字符倒转
Sep 06 Python
Python实现的一个找零钱的小程序代码分享
Aug 25 Python
简单介绍利用TK在Python下进行GUI编程的教程
Apr 13 Python
简单介绍Python中的floor()方法
May 15 Python
Python使用turtule画五角星的方法
Jul 09 Python
如何用itertools解决无序排列组合的问题
May 18 Python
Python类装饰器实现方法详解
Dec 21 Python
python实现三维拟合的方法
Dec 29 Python
浅析python的Lambda表达式
Feb 27 Python
Python中super函数用法实例分析
Mar 18 Python
pycharm显示远程图片的实现
Nov 04 Python
什么是python的列表推导式
May 26 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
php5中类的学习
2008/03/28 PHP
phpStudy 2016 使用教程详解(支持PHP7)
2017/10/18 PHP
js同时按下两个方向键
2007/12/01 Javascript
jquery png 透明解决方案(推荐)
2010/08/21 Javascript
用JS实现一个TreeMenu效果分享
2011/08/28 Javascript
javascipt:filter过滤介绍及使用
2014/09/10 Javascript
JavaScript实现解析INI文件内容的方法
2016/11/17 Javascript
详解angularjs利用ui-route异步加载组件
2017/05/21 Javascript
JS创建Tag标签的方法详解
2017/06/09 Javascript
vue基于mint-ui的城市选择3级联动的示例
2017/10/25 Javascript
详解如何用模块化的方式写vuejs
2017/12/16 Javascript
代码详解Vuejs响应式原理
2017/12/20 Javascript
微信小程序实现滑动翻页效果(完整代码)
2019/12/06 Javascript
js实现随机点名功能
2020/12/23 Javascript
Python lambda和Python def区别分析
2014/11/30 Python
Python实现包含min函数的栈
2016/04/29 Python
python变量不能以数字打头详解
2016/07/06 Python
python 循环遍历字典元素的简单方法
2016/09/11 Python
python xml.etree.ElementTree遍历xml所有节点实例详解
2016/12/04 Python
Python 中 list 的各项操作技巧
2017/04/13 Python
python3.5+tesseract+adb实现西瓜视频或头脑王者辅助答题
2018/01/17 Python
python学生信息管理系统
2018/03/13 Python
python简单操作excle的方法
2018/09/12 Python
Python实现将字符串的首字母变为大写,其余都变为小写的方法
2019/06/11 Python
解决canvas转base64/jpeg时透明区域变成黑色背景的方法
2016/10/23 HTML / CSS
家得宝官网:The Home Depot(全球最大的家居装饰专业零售商)
2018/12/17 全球购物
英国的潮牌鞋履服饰商店:size?
2019/03/26 全球购物
美国户外服装和装备购物网站:Outland USA
2020/03/22 全球购物
采用怎样的方法保证数据的完整性
2013/12/02 面试题
自荐信怎么写好
2013/11/11 职场文书
《台湾的蝴蝶谷》教学反思
2014/02/20 职场文书
领导班子个人对照检查剖析材料
2014/09/29 职场文书
银行职员工作失误检讨书
2014/10/14 职场文书
实习单位指导教师评语
2014/12/30 职场文书
Python基础之hashlib模块详解
2021/05/06 Python
vue实现可以快进后退的跑马灯组件
2022/04/08 Vue.js