利用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使用新浪微博api上传图片到微博示例
Jan 10 Python
Python使用reportlab将目录下所有的文本文件打印成pdf的方法
May 20 Python
Python的Flask框架中集成CKeditor富文本编辑器的教程
Jun 13 Python
win10系统中安装scrapy-1.1
Jul 03 Python
关于Python元祖,列表,字典,集合的比较
Jan 06 Python
Python实现树的先序、中序、后序排序算法示例
Jun 23 Python
Python编程中NotImplementedError的使用方法
Apr 21 Python
python traceback捕获并打印异常的方法
Aug 31 Python
int在python中的含义以及用法
Jun 27 Python
Anaconda和ipython环境适配的实现
Apr 22 Python
python使用布隆过滤器的实现示例
Aug 20 Python
Python爬虫实例之2021猫眼票房字体加密反爬策略(粗略版)
Feb 22 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与MongoDB简介|安全|M+PHP应用实例详解
2013/06/17 PHP
php中的四舍五入函数代码(floor函数、ceil函数、round与intval)
2014/07/14 PHP
curl和libcurl的区别简介
2015/07/01 PHP
PHP实现根据图片色界在不同位置加水印的方法
2015/08/08 PHP
PHP内置加密函数详解
2016/11/20 PHP
php中引用&的用法分析【变量引用,函数引用,对象引用】
2016/12/12 PHP
[推荐]javascript 面向对象技术基础教程
2009/03/03 Javascript
extjs grid设置某列背景颜色和字体颜色的方法
2010/09/03 Javascript
js实现有时间限制消失的图片方法
2015/02/27 Javascript
javascript实现实时输出当前的时间
2015/04/27 Javascript
JS使用正则表达式除去字符串中重复字符的方法
2015/11/05 Javascript
JS组件中bootstrap multiselect两大组件较量
2016/01/26 Javascript
一道常被人轻视的web前端常见面试题(JS)
2016/02/15 Javascript
JS 日期与时间戮相互转化的简单实例
2016/06/22 Javascript
一道优雅面试题分析js中fn()和return fn()的区别
2016/07/05 Javascript
Actionscript与javascript交互实例程序(修改)
2016/09/22 Javascript
浅谈Vue SSR 的 Cookies 问题
2017/11/20 Javascript
AngularJS select加载数据选中默认值的方法
2018/02/28 Javascript
原生js封装的ajax方法示例
2018/08/02 Javascript
vue模块拖拽实现示例代码
2019/03/09 Javascript
ES6中字符串的使用方法扩展
2019/06/04 Javascript
通过实例了解js函数中参数的传递
2019/06/15 Javascript
vue实现手机号码的校验实例代码(防抖函数的应用场景)
2019/09/05 Javascript
[52:22]EG vs VG Supermajor小组赛B组 BO3 第一场 6.2
2018/06/03 DOTA
使用Python的Supervisor进行进程监控以及自动启动
2014/05/29 Python
Python素数检测的方法
2015/05/11 Python
删除python pandas.DataFrame 的多重index实例
2018/06/08 Python
使用 python pyautogui实现鼠标键盘控制功能
2019/08/04 Python
微信小程序实现可实时改变转速的css3旋转动画实例代码
2018/09/11 HTML / CSS
Agoda西班牙:全球特价酒店预订
2017/06/03 全球购物
日本必酷网络直营店:Biccamera
2019/03/23 全球购物
司机岗位职责
2013/11/15 职场文书
施工协议书范本
2014/04/22 职场文书
三好学生个人总结
2015/02/15 职场文书
开业典礼致辞
2015/07/29 职场文书
爱国主义教育主题班会
2015/08/13 职场文书