利用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脚本来实现最简单的FTP下载的教程
May 04 Python
在Python的Django框架中编写错误提示页面
Jul 22 Python
Python md5与sha1加密算法用法分析
Jul 14 Python
利用python批量修改word文件名的方法示例
Oct 17 Python
TensorFlow在MAC环境下的安装及环境搭建
Nov 14 Python
python使用tornado实现简单爬虫
Jul 28 Python
PyQt4编程之让状态栏显示信息的方法
Jun 18 Python
python并发编程 Process对象的其他属性方法join方法详解
Aug 20 Python
详解Django admin高级用法
Nov 06 Python
vscode配置anaconda3的方法步骤
Aug 08 Python
Python内置函数及功能简介汇总
Oct 13 Python
python实现定时发送邮件
Dec 23 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
xml+php动态载入与分页
2006/10/09 PHP
PHP的FTP学习(二)
2006/10/09 PHP
用PHP和ACCESS写聊天室(四)
2006/10/09 PHP
PHP eval函数使用介绍
2013/12/08 PHP
无需数据库在线投票调查php代码
2016/07/20 PHP
PHP获取input输入框中的值去数据库比较显示出来
2016/11/16 PHP
js常见表单应用技巧
2008/01/09 Javascript
javascript cookies 设置、读取、删除实例代码
2010/04/12 Javascript
基于jQuery架构javascript基础体系
2011/01/01 Javascript
javascript避免数字计算精度误差的方法详解
2014/03/05 Javascript
jquery根据属性和index来查找属性值并操作
2014/07/25 Javascript
jQuery中odd选择器的定义和用法
2014/12/23 Javascript
深入学习JavaScript中的Rest参数和参数默认值
2015/07/28 Javascript
JavaScript数据类型学习笔记分享
2016/09/01 Javascript
javascript跨域请求包装函数与用法示例
2016/11/03 Javascript
如何在AngularJs中调用第三方插件库
2017/05/21 Javascript
Vue2几种常见开局方式详解
2017/09/09 Javascript
Vue中使用Sortable的示例代码
2018/04/07 Javascript
vue 解决computed修改data数据的问题
2019/11/06 Javascript
js校验开始时间和结束时间
2020/05/26 Javascript
Vuex实现购物车小功能
2020/08/17 Javascript
three.js显示中文字体与tween应用详析
2021/01/04 Javascript
js canvas实现五子棋小游戏
2021/01/22 Javascript
[01:20]PWL S2开团时刻第三期——团战可以输 蝙蝠必须死
2020/11/26 DOTA
python实现计算资源图标crc值的方法
2014/10/05 Python
sublime text 3配置使用python操作方法
2017/06/11 Python
python+mongodb数据抓取详细介绍
2017/10/25 Python
python如何生成网页验证码
2018/07/28 Python
Tensorflow限制CPU个数实例
2020/02/06 Python
TensorFlow的环境配置与安装教程详解(win10+GeForce GTX1060+CUDA 9.0+cuDNN7.3+tensorflow-gpu 1.12.0+python3.5.5)
2020/06/22 Python
基于Python 的语音重采样函数解析
2020/07/06 Python
基于python实现MQTT发布订阅过程原理解析
2020/07/27 Python
CSS3制作半透明边框(Facebox)类似渐变
2012/12/09 HTML / CSS
2014年高中教师工作总结
2014/12/19 职场文书
2014年变电站工作总结
2014/12/19 职场文书
小学生暑假安全公约
2015/07/14 职场文书