利用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之有容乃大的list(2)
Sep 15 Python
10种检测Python程序运行时间、CPU和内存占用的方法
Apr 01 Python
在Python中操作字符串之replace()方法的使用
May 19 Python
详解Python设计模式编程中观察者模式与策略模式的运用
Mar 02 Python
图解Python变量与赋值
Apr 03 Python
python使用ddt过程中遇到的问题及解决方案【推荐】
Oct 29 Python
详解Python图像处理库Pillow常用使用方法
Sep 02 Python
Python实现ElGamal加密算法的示例代码
Jun 19 Python
TensorFlow保存TensorBoard图像操作
Jun 23 Python
python SOCKET编程基础入门
Feb 27 Python
PyQt5实现多张图片显示并滚动
Jun 11 Python
5个pandas调用函数的方法让数据处理更加灵活自如
Apr 24 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
全国FM电台频率大全 - 17 湖北省
2020/03/11 无线电
真正的ZIP文件操作类(php)
2007/07/21 PHP
php使用glob函数遍历文件和目录详解
2016/09/23 PHP
让ThinkPHP的模板引擎达到最佳效率的方法详解
2017/03/14 PHP
Yii 2.0自带的验证码使用经验分享
2017/06/19 PHP
PHP 中TP5 Request 请求对象的实例详解
2017/07/31 PHP
php基于环形链表解决约瑟夫环问题示例
2017/11/07 PHP
用js+xml自动生成表格的东西
2006/12/21 Javascript
Jquery中增加参数与Json转换代码
2009/11/20 Javascript
js获取input标签的输入值实现代码
2013/08/05 Javascript
jquery弹出关闭遮罩层实例
2013/08/06 Javascript
父节点获取子节点的字符串示例代码
2014/02/26 Javascript
jQuery 中国省市两级联动选择附图
2014/05/14 Javascript
在Google 地图上实现做的标记相连接
2015/01/05 Javascript
js实现单击图片放大图片的方法
2015/02/17 Javascript
jQuery对象和DOM对象之间相互转换的方法介绍
2015/02/28 Javascript
javascript实现dom动态创建省市纵向列表菜单的方法
2015/05/14 Javascript
JS折半插入排序算法实例
2015/12/02 Javascript
jQuery中Find选择器用法示例
2016/09/21 Javascript
微信小程序中实现一对多发消息详解及实例代码
2017/02/14 Javascript
javascript深拷贝的原理与实现方法分析
2017/04/10 Javascript
关于ckeditor在bootstrap中modal中弹框无法输入的解决方法
2019/09/11 Javascript
vue单元格多列合并的实现
2020/11/26 Vue.js
Python3里的super()和__class__使用介绍
2015/04/23 Python
Django model反向关联名称的方法
2018/12/15 Python
土耳其国际性时尚购物网站:Modanisa
2018/01/19 全球购物
2014年迎新年活动方案
2014/02/19 职场文书
学校重阳节活动总结
2015/03/24 职场文书
物业工程部主管岗位职责
2015/04/16 职场文书
美丽的大脚观后感
2015/06/03 职场文书
运动会开幕式主持词
2015/07/01 职场文书
go语言-在mac下brew升级golang
2021/04/25 Golang
pytorch 运行一段时间后出现GPU OOM的问题
2021/06/02 Python
Matplotlib可视化之添加让统计图变得简单易懂的注释
2021/06/11 Python
Python anaconda安装库命令详解
2021/10/16 Python
mysql5.7的安装及Navicate长久免费使用的实现过程
2021/11/17 MySQL