Python爬虫抓取代理IP并检验可用性的实例


Posted in Python onMay 07, 2018

经常写爬虫,难免会遇到ip被目标网站屏蔽的情况,银次一个ip肯定不够用,作为节约的程序猿,能不花钱就不花钱,那就自己去找吧,这次就写了下抓取 西刺代理上的ip,但是这个网站也反爬!!!

至于如何应对,我觉得可以通过增加延时试试,可能是我抓取的太频繁了,所以被封IP了。

但是,还是可以去IP巴士试试的,条条大路通罗马嘛,不能吊死在一棵树上。

不废话,上代码。

#!/usr/bin/env python
# -*- coding:utf8 -*-
import urllib2
import time
from bs4 import BeautifulSoup
import sys
reload(sys)
sys.setdefaultencoding( "utf-8" )
req_header = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11',
 'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
 #'Accept-Language': 'en-US,en;q=0.8,zh-Hans-CN;q=0.5,zh-Hans;q=0.3',
 'Accept-Charset':'ISO-8859-1,utf-8;q=0.7,*;q=0.3',
 'Accept-Encoding':'en-us',
 'Connection':'keep-alive',
 'Referer':'http://www.baidu.com/'
 }
req_timeout = 5
testUrl = "http://www.baidu.com/"
testStr = "wahaha"
file1 = open('proxy.txt' , 'w')
# url = ""
# req = urllib2.Request(url,None,req_header)
# jsondatas = urllib2.urlopen(req,None,req_timeout).read()
cookies = urllib2.HTTPCookieProcessor()
checked_num = 0
grasp_num = 0
for page in range(1, 160):
 req = urllib2.Request('http://www.xici.net.co/nn/' + str(page), None, req_header)
 html_doc = urllib2.urlopen(req, None, req_timeout).read()
 # html_doc = urllib2.urlopen('http://www.xici.net.co/nn/' + str(page)).read()
 soup = BeautifulSoup(html_doc)
 trs = soup.find('table', id='ip_list').find_all('tr')
 for tr in trs[1:]:
  tds = tr.find_all('td')
  ip = tds[1].text.strip()
  port = tds[2].text.strip()
  protocol = tds[5].text.strip()
  if protocol == 'HTTP' or protocol == 'HTTPS':
   #of.write('%s=%s:%s\n' % (protocol, ip, port))
   print '%s=%s:%s' % (protocol, ip, port)
   grasp_num +=1
   proxyHandler = urllib2.ProxyHandler({"http": r'http://%s:%s' % (ip, port)})
   opener = urllib2.build_opener(cookies, proxyHandler)
   opener.addheaders = [('User-Agent',
         'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36')]
   t1 = time.time()
   try:
    req = opener.open(testUrl, timeout=req_timeout)
    result = req.read()
    timeused = time.time() - t1
    pos = result.find(testStr)
    if pos > 1:
     file1.write(protocol+"\t"+ip+"\t"+port+"\n")
     checked_num+=1
     print checked_num, grasp_num
    else:
     continue
   except Exception,e:
    continue
file1.close()
print checked_num,grasp_num

个人感觉代码里没有太复杂的,就没有加注释,相信大家基本可以理解,如有问题也请多批评指正,共同进步!

以上这篇Python爬虫抓取代理IP并检验可用性的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
详解在Python程序中解析并修改XML内容的方法
Nov 16 Python
Django实战之用户认证(初始配置)
Jul 16 Python
Django2.1.3 中间件使用详解
Nov 26 Python
Python 最大概率法进行汉语切分的方法
Dec 14 Python
Python实现的KMeans聚类算法实例分析
Dec 29 Python
对Python生成汉字字库文字,以及转换为文字图片的实例详解
Jan 29 Python
Python Django框架单元测试之文件上传测试示例
May 17 Python
Python实现性能自动化测试竟然如此简单
Jul 30 Python
对python中的*args与**kwgs的含义与作用详解
Aug 28 Python
解决Django layui {{}}冲突的问题
Aug 29 Python
解决django-xadmin列表页filter关联对象搜索问题
Nov 15 Python
python 实现屏幕录制示例
Dec 23 Python
Python视频爬虫实现下载头条视频功能示例
May 07 #Python
十分钟利用Python制作属于你自己的个性logo
May 07 #Python
Redis使用watch完成秒杀抢购功能的代码
May 07 #Python
Python文本统计功能之西游记用字统计操作示例
May 07 #Python
Python中的函数作用域
May 07 #Python
Php多进程实现代码
May 07 #Python
Python格式化输出%s和%d
May 07 #Python
You might like
PHP怎样调用MSSQL的存储过程
2006/10/09 PHP
php代码收集表单内容并写入文件的代码
2012/01/29 PHP
php调用淘宝开放API实现根据卖家昵称获取卖家店铺ID的方法
2015/07/29 PHP
Laravel使用memcached缓存对文章增删改查进行优化的方法
2016/10/08 PHP
[原创]PHP实现字节数Byte转换为KB、MB、GB、TB的方法
2017/08/31 PHP
PHP重置数组为连续数字索引的几种方式总结
2018/03/12 PHP
thinkPHP5框架设置404、403等http状态页面的方法
2018/06/05 PHP
类似CSDN图片切换效果脚本
2009/09/17 Javascript
ExtJs 3.1 XmlTreeLoader Example Error
2010/02/09 Javascript
基于Jquery的跨域传输数据(JSONP)
2011/03/10 Javascript
JS 实现导航栏悬停效果(续)
2013/09/24 Javascript
不同Jquery版本引发的问题解决
2013/10/14 Javascript
javascript模拟订火车票和退票示例
2014/04/24 Javascript
jQuery实现对网页节点的增删改查功能示例
2017/09/18 jQuery
微信小程序从注册账号到上架(图文详解)
2019/07/17 Javascript
vue调用语音播放的方法
2019/09/27 Javascript
让IDE识别webpack的别名alias的实现方法
2020/05/06 Javascript
python批量导出导入MySQL用户的方法
2013/11/15 Python
浅谈python中set使用
2016/06/30 Python
Python基于Socket实现的简单聊天程序示例
2017/08/05 Python
Python装饰器用法示例小结
2018/02/11 Python
使用python编写监听端
2018/04/12 Python
在Python中输入一个以空格为间隔的数组方法
2018/11/13 Python
Python3中的最大整数和最大浮点数实例
2019/07/09 Python
python属于跨平台语言码
2020/06/09 Python
python中remove函数的踩坑记录
2021/01/04 Python
css3翻牌翻数字的示例代码
2020/02/07 HTML / CSS
国际知名设计师时装商店:Coggles
2016/09/05 全球购物
韩国江南富人区高端时尚百货商场:Galleria(格乐丽雅)
2018/03/27 全球购物
荷兰和比利时时尚鞋店:Van Dalen
2018/04/23 全球购物
工程造价与财务管理专业应届生求职信
2013/10/06 职场文书
大学生职业生涯规划书前言
2014/01/09 职场文书
调解协议书
2014/04/16 职场文书
大学生万能检讨书范例
2014/10/04 职场文书
刑事附带民事上诉状
2015/05/23 职场文书
把77A收信机改造成收音机
2022/04/05 无线电