利用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爬虫常用的模块分析
Aug 29 Python
Python使用gensim计算文档相似性
Apr 10 Python
Python与R语言的简要对比
Nov 14 Python
python在ubuntu中的几种安装方法(小结)
Dec 08 Python
django中的HTML控件及参数传递方法
Mar 20 Python
对python中Librosa的mfcc步骤详解
Jan 09 Python
Python实现的爬取百度文库功能示例
Feb 16 Python
Django框架序列化与反序列化操作详解
Nov 01 Python
Python常用模块sys,os,time,random功能与用法实例分析
Jan 07 Python
python GUI库图形界面开发之PyQt5输入对话框QInputDialog详细使用方法与实例
Feb 27 Python
opencv 图像轮廓的实现示例
Jul 08 Python
Python使用tkinter实现小时钟效果
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防注入代码
2010/04/07 PHP
PHP数据流应用的一个简单实例
2012/09/14 PHP
解析Win7 XAMPP apache无法启动的问题
2013/06/26 PHP
destoon各类调用汇总
2014/06/20 PHP
php编程每天必学之验证码
2016/03/03 PHP
使用PHPExcel实现数据批量导出为excel表格的方法(必看)
2017/06/09 PHP
asp 取文本框名称代码
2008/12/02 Javascript
Javascript技巧之不要用for in语句对数组进行遍历
2010/10/20 Javascript
JavaScript作用域链使用介绍
2013/08/29 Javascript
浅析JavaScript基本类型与引用类型
2014/05/28 Javascript
jQuery实现带滚动线条导航效果的方法
2015/01/30 Javascript
PHP+jQuery+Ajax实现多图片上传效果
2015/03/14 Javascript
浅析js中substring和substr的方法
2015/11/09 Javascript
深入理解JS DOM事件机制
2016/08/06 Javascript
jQuery插件FusionCharts绘制的2D帕累托图效果示例【附demo源码】
2017/03/28 jQuery
Angular将填入表单的数据渲染到表格的方法
2017/09/22 Javascript
ES6 javascript中class静态方法、属性与实例属性用法示例
2017/10/30 Javascript
JavaScript通过mouseover()实现图片变大效果的示例
2017/12/20 Javascript
微信小程序自定义弹窗wcPop插件
2018/11/19 Javascript
微信小程序实现swiper切换卡内嵌滚动条不显示的方法示例
2018/12/20 Javascript
小程序分页实践之编写可复用分页组件
2019/07/18 Javascript
浅谈vue 多个变量同时赋相同值互相影响
2020/08/05 Javascript
react项目从新建到部署的实现示例
2021/02/19 Javascript
python实现爬虫下载漫画示例
2014/02/16 Python
Python版微信红包分配算法
2015/05/04 Python
解决python爬虫中有中文的url问题
2018/05/11 Python
Django 开发环境配置过程详解
2019/07/18 Python
使用Python实现批量ping操作方法
2020/05/06 Python
如何利用pycharm进行代码更新比较
2020/11/04 Python
详解Python openpyxl库的基本应用
2021/02/26 Python
使用HTML5的链接预取功能(link prefetching)给网站提速
2012/12/13 HTML / CSS
使用layui框架实现点击左侧导航切换右侧内容且右侧选项卡跟随变化的效果
2020/11/10 HTML / CSS
酒店保安员岗位职责
2014/01/31 职场文书
十佳青年事迹材料
2014/08/21 职场文书
2015年计生工作总结范文
2015/04/24 职场文书
Python实现自动玩连连看的脚本分享
2022/04/04 Python