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类的基础入门知识
Nov 24 Python
python通过floor函数舍弃小数位的方法
Mar 17 Python
用Python实现通过哈希算法检测图片重复的教程
Apr 02 Python
深入理解Python装饰器
Jul 27 Python
Anaconda多环境多版本python配置操作方法
Sep 12 Python
人机交互程序 python实现人机对话
Nov 14 Python
Python wxPython库使用wx.ListBox创建列表框示例
Sep 03 Python
python抓取搜狗微信公众号文章
Apr 01 Python
python调用支付宝支付接口流程
Aug 15 Python
Python内置异常类型全面汇总
May 28 Python
利用Python优雅的登录校园网
Oct 21 Python
Python析构函数__del__定义原理解析
Nov 20 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 删除cookie方法详解
2014/12/01 PHP
PHP屏蔽关键字实现方法
2016/11/17 PHP
PHP面向对象程序设计OOP继承用法入门示例
2016/12/27 PHP
PHPCrawl爬虫库实现抓取酷狗歌单的方法示例
2017/12/21 PHP
js innerHTML 的一些问题的解决方法
2008/06/22 Javascript
javascript 验证日期的函数
2010/03/18 Javascript
调试Node.JS的辅助工具(NodeWatcher)
2012/01/04 Javascript
利用JS实现浏览器的title闪烁
2013/07/08 Javascript
javascript+canvas实现刮刮卡抽奖效果
2015/07/29 Javascript
JS的框架Polymer中的dom-if和is属性使用说明
2015/07/29 Javascript
深入浅析JSON.parse()、JSON.stringify()和eval()的作用详解
2016/04/03 Javascript
JS中用三种方式实现导航菜单中的二级下拉菜单
2016/10/31 Javascript
bootstrap模态框跳转到当前模板页面 框消失了而背景存在问题的解决方法
2020/11/30 Javascript
Vue-Router实现页面正在加载特效方法示例
2017/02/12 Javascript
关于axios返回空对象的问题解决
2017/04/04 Javascript
详解vue slot插槽的使用方法
2017/06/13 Javascript
深入理解JavaScript和TypeScript中的class
2018/04/22 Javascript
vue通过指令(directives)实现点击空白处收起下拉框
2018/12/06 Javascript
Python3实现将文件树中所有文件和子目录归档到tar压缩文件的方法
2015/05/22 Python
详解Python中的各种函数的使用
2015/05/24 Python
Python的string模块中的Template类字符串模板用法
2016/06/27 Python
python实现批量按比例缩放图片效果
2018/03/30 Python
对pandas的层次索引与取值的新方法详解
2018/11/06 Python
如何使用Flask-Migrate拓展数据库表结构
2019/07/24 Python
python 根据网易云歌曲的ID 直接下载歌曲的实例
2019/08/24 Python
解析python实现Lasso回归
2019/09/11 Python
Python列表list操作相关知识小结
2020/01/29 Python
Python多线程Threading、子线程与守护线程实例详解
2020/03/24 Python
python time()的实例用法
2020/11/03 Python
总经理文秘岗位职责
2014/02/03 职场文书
感恩母亲节活动方案
2014/03/04 职场文书
房屋租赁协议书
2014/04/10 职场文书
企业党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
农业项目合作意向书
2015/05/08 职场文书
给numpy.array增加维度的超简单方法
2021/06/02 Python
基于MySql验证的vsftpd虚拟用户
2021/11/07 MySQL