利用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开发常用的一些开源Package分享
Feb 14 Python
python登录豆瓣并发帖的方法
Jul 08 Python
利用Opencv中Houghline方法实现直线检测
Feb 11 Python
Python中Proxypool库的安装与配置
Oct 19 Python
Python中实现单例模式的n种方式和原理
Nov 14 Python
深入浅析Python2.x和3.x版本的主要区别
Nov 30 Python
Python实现简易过滤删除数字的方法小结
Jan 09 Python
numpy数组之存取文件的实现示例
May 24 Python
Python Socketserver实现FTP文件上传下载代码实例
Mar 27 Python
Python APScheduler执行使用方法详解
Dec 10 Python
python 实现ping测试延迟的两种方法
Dec 10 Python
Python 高级库15 个让新手爱不释手(推荐)
May 15 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
Protoss兵种对照表
2020/03/14 星际争霸
PHP获取input输入框中的值去数据库比较显示出来
2016/11/16 PHP
PHP学习记录之数组函数
2018/06/01 PHP
PHP 图片处理
2020/09/16 PHP
asp 的 分词实现代码
2007/05/24 Javascript
JQuery获取元素文档大小、偏移和位置和滚动条位置的方法集合
2010/01/12 Javascript
Ext JS 4官方文档之三 -- 类体系概述与实践
2012/12/16 Javascript
js改变文章字体大小的实例代码
2013/11/27 Javascript
jquery选择器之属性过滤选择器详解
2014/01/27 Javascript
Javascript基础教程之比较操作符
2015/01/18 Javascript
实例讲解JS中setTimeout()的用法
2016/01/28 Javascript
JavaScript数据操作_浅谈原始值和引用值的操作本质
2016/08/23 Javascript
ES10 特性的完整指南小结
2019/03/04 Javascript
微信小程序API—获取定位的详解
2019/04/30 Javascript
详解vue beforeRouteEnter 异步获取数据给实例问题
2019/08/09 Javascript
Vue实现图片与文字混输效果
2019/12/04 Javascript
解决vscode进行vue格式化,会自动补分号和双引号的问题
2020/10/26 Javascript
Python开发编码规范
2006/09/08 Python
python 输出上个月的月末日期实例
2018/04/11 Python
使用python执行shell脚本 并动态传参 及subprocess的使用详解
2020/03/06 Python
IDLE下Python文件编辑和运行操作
2020/04/25 Python
在服务器上安装python3.8.2环境的教程详解
2020/04/26 Python
使用Python pip怎么升级pip
2020/08/11 Python
美国最便宜的旅游网站:CheapTickets
2017/07/09 全球购物
购买一个高级域名:BuyDomains
2018/03/11 全球购物
公务员总结性个人自我评价
2013/12/05 职场文书
信息技术专业大学生职业生涯规划书
2014/01/24 职场文书
大学社团计划书
2014/05/01 职场文书
创业女性典型材料
2014/05/02 职场文书
人力资源管理毕业求职信
2014/08/05 职场文书
学校安全工作汇报材料
2014/08/16 职场文书
买房子个人收入证明
2014/10/12 职场文书
革命电影观后感
2015/06/18 职场文书
校园运动会广播稿
2015/08/19 职场文书
学校扫黄打非工作总结
2015/10/15 职场文书
中学教代会开幕词
2016/03/04 职场文书