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进行新浪微博的mid和url互相转换实例(10进制和62进制互算)
Apr 25 Python
零基础写python爬虫之抓取百度贴吧并存储到本地txt文件改进版
Nov 06 Python
python抽象基类用法实例分析
Jun 04 Python
基于python指定包的安装路径方法
Oct 27 Python
Python多进程写入同一文件的方法
Jan 14 Python
Windows下pycharm创建Django 项目(虚拟环境)过程解析
Sep 16 Python
python 实现rolling和apply函数的向下取值操作
Jun 08 Python
Python faker生成器生成虚拟数据代码实例
Jul 20 Python
Selenium alert 弹窗处理的示例代码
Aug 06 Python
解决python3.x安装numpy成功但import出错的问题
Nov 17 Python
pycharm配置安装autopep8自动规范代码的实现
Mar 02 Python
利用Selenium添加cookie实现自动登录的示例代码(fofa)
May 08 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 数字左侧自动补0
2008/03/31 PHP
php 动态添加记录
2009/03/10 PHP
php smarty截取中文字符乱码问题?gb2312/utf-8
2011/11/07 PHP
深入解读php中关于抽象(abstract)类和抽象方法的问题分析
2014/01/03 PHP
PHP $_FILES中error返回值详解
2014/01/30 PHP
PHP数据库操作Helper类完整实例
2016/05/11 PHP
Javascript miscellanea -display data real time, using window.status
2007/01/09 Javascript
js 刷新页面的代码小结 推荐
2010/04/02 Javascript
js阻止冒泡及jquery阻止事件冒泡示例介绍
2013/11/19 Javascript
jQuery实现鼠标滚轮动态改变样式或效果
2015/01/05 Javascript
jquery显示loading图片直到网页加载完成的方法
2015/06/25 Javascript
js+css实现上下翻页相册代码分享
2015/08/18 Javascript
详解js中class的多种函数封装方法
2016/01/03 Javascript
基于jquery编写分页插件
2016/03/07 Javascript
相册展示PhotoSwipe.js插件实现
2016/08/25 Javascript
jQuery点击导航栏选中更换样式的实现代码
2017/01/23 Javascript
JavaScript实现微信红包算法及问题解决方法
2018/04/26 Javascript
vue实现键盘输入支付密码功能
2018/08/18 Javascript
在 Angular-cli 中使用 simple-mock 实现前端开发 API Mock 接口数据模拟功能的方法
2018/11/28 Javascript
微信小程序使用setData修改数组中单个对象的方法分析
2018/12/30 Javascript
如何为你的JavaScript代码日志着色详解
2019/04/08 Javascript
对layui中的onevent 和event的使用详解
2019/09/06 Javascript
vue之a-table中实现清空选中的数据
2019/11/07 Javascript
Vue触发input选取文件点击事件操作
2020/08/07 Javascript
Python爬虫:Request Payload和Form Data的简单区别说明
2020/04/30 Python
Python使用matplotlib绘制圆形代码实例
2020/05/27 Python
澳大利亚鞋仓库:Shoe Warehouse
2019/07/25 全球购物
汽车技术服务与营销专业在籍生自荐信
2013/09/28 职场文书
体育教育毕业生自荐信
2013/11/21 职场文书
员工工作表扬信范文
2014/01/13 职场文书
法学毕业生自我鉴定
2014/01/31 职场文书
面试后的英文感谢信
2014/02/01 职场文书
捐书活动总结
2014/05/04 职场文书
乒乓球兴趣小组活动总结
2014/07/08 职场文书
教师四风对照检查材料思想汇报
2014/09/17 职场文书
呼啸山庄读书笔记
2015/06/29 职场文书