利用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 相关文章推荐
windows下wxPython开发环境安装与配置方法
Jun 28 Python
win10下Python3.6安装、配置以及pip安装包教程
Oct 01 Python
Python温度转换实例分析
Jan 17 Python
使用python实现BLAST
Feb 12 Python
Python3 replace()函数使用方法
Mar 19 Python
Appium+Python自动化测试之运行App程序示例
Jan 23 Python
Python中面向对象你应该知道的一下知识
Jul 10 Python
基于Python的图像数据增强Data Augmentation解析
Aug 13 Python
Python实现多线程/多进程的TCP服务器
Sep 03 Python
windows、linux下打包Python3程序详细方法
Mar 17 Python
解决python中0x80072ee2错误的方法
Jul 19 Python
Python Pivot table透视表使用方法解析
Sep 11 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过滤html字符串,防止SQL注入的方法
2013/07/02 PHP
thinkPHP引入类的方法详解
2016/12/08 PHP
PHP生成随机数的方法总结
2018/03/01 PHP
JavaScript生成GUID的多种算法小结
2013/08/18 Javascript
javascript scrollTop正解使用方法
2013/11/14 Javascript
Javascript四舍五入Math.round()与Math.pow()使用介绍
2013/12/27 Javascript
JavaScript中Math对象方法使用概述
2014/01/02 Javascript
详解参数传递四种形式
2015/07/21 Javascript
JS获取及验证开始结束日期的方法
2016/08/20 Javascript
javascript动画系列之模拟滚动条
2016/12/13 Javascript
ES6教程之for循环和Map,Set用法分析
2017/04/10 Javascript
three.js中文文档学习之通过模块导入
2017/11/20 Javascript
Angular4学习之Angular CLI的安装与使用教程
2018/01/04 Javascript
微信小程序实现换肤功能
2018/03/14 Javascript
15个顶级开源JavaScript框架和库
2018/10/10 Javascript
layui: layer.open加载窗体时出现遮罩层的解决方法
2019/09/26 Javascript
JavaScript实现简单随机点名器
2019/11/21 Javascript
[52:39]完美世界DOTA2联赛PWL S3 CPG vs Forest 第一场 12.16
2020/12/17 DOTA
测试、预发布后用python检测网页是否有日常链接
2014/06/03 Python
python类和函数中使用静态变量的方法
2015/05/09 Python
Python实现类似jQuery使用中的链式调用的示例
2016/06/16 Python
python定向爬取淘宝商品价格
2018/02/27 Python
Tensorflow中使用tfrecord方式读取数据的方法
2018/06/19 Python
python中yield的用法详解——最简单,最清晰的解释
2019/04/04 Python
Python GUI编程 文本弹窗的实例
2019/06/11 Python
Python DataFrame一列拆成多列以及一行拆成多行
2019/08/06 Python
乐天旅游香港网站:日本饭店预订
2017/11/29 全球购物
viagogo意大利票务平台:演唱会、体育比赛、戏剧门票
2018/01/26 全球购物
Diamondback自行车:拥有你的冒险
2019/04/22 全球购物
医院护士求职自荐信格式
2013/09/21 职场文书
《东方明珠》教学反思
2014/04/20 职场文书
市级绿色学校申报材料
2014/08/25 职场文书
个人思想政治总结
2015/03/05 职场文书
网络研修随笔感言
2015/11/18 职场文书
pandas中DataFrame数据合并连接(merge、join、concat)
2021/05/30 Python
Golang bufio详细讲解
2022/04/21 Golang