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控制多进程与多线程并发数总结
Oct 26 Python
详谈python read readline readlines的区别
Sep 22 Python
一篇文章快速了解Python的GIL
Jan 12 Python
Python中函数参数调用方式分析
Aug 09 Python
python dataframe向下向上填充,fillna和ffill的方法
Nov 28 Python
Python中collections模块的基本使用教程
Dec 07 Python
python 监测内存和cpu的使用率实例
Nov 28 Python
keras打印loss对权重的导数方式
Jun 10 Python
Django REST 异常处理详解
Jul 15 Python
Django数据模型中on_delete使用详解
Nov 30 Python
Python基础详解之描述符
Apr 28 Python
Python使用pandas导入csv文件内容的示例代码
Dec 24 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中转义mysql语句的实现代码
2011/06/24 PHP
php设计模式 Strategy(策略模式)
2011/06/26 PHP
修改ThinkPHP缓存为Memcache的方法
2014/06/25 PHP
typecho插件编写教程(三):保存配置
2015/05/28 PHP
详解PHP实现定时任务的五种方法
2016/07/25 PHP
php微信公众平台交互与接口详解
2016/11/28 PHP
Thinkphp集成抖音SDK的实现方法
2020/04/28 PHP
javascript 面向对象全新理练之数据的封装
2009/12/03 Javascript
javascript的创建多行字符串的7种方法
2014/04/29 Javascript
Node.js文件操作详解
2014/08/16 Javascript
javascript实现多级联动下拉菜单的方法
2015/02/06 Javascript
基于Bootstrap+jQuery.validate实现表单验证
2016/05/30 Javascript
AngularJs表单校验功能实例代码
2017/02/09 Javascript
vue.js事件处理器是什么
2017/03/20 Javascript
VUE中v-model和v-for指令详解
2017/06/23 Javascript
详解利用Angular实现多团队模块化SPA开发框架
2017/11/27 Javascript
灵活使用console让js调试更简单的方法步骤
2019/04/23 Javascript
Javascript Dom元素获取和添加详解
2019/09/24 Javascript
使用axios发送post请求,将JSON数据改为form类型的示例
2019/10/31 Javascript
python使用range函数计算一组数和的方法
2015/05/07 Python
Django查找网站项目根目录和对正则表达式的支持
2015/07/15 Python
python中实现精确的浮点数运算详解
2017/11/02 Python
python生成ppt的方法
2018/06/07 Python
对Python捕获控制台输出流的方法详解
2019/01/07 Python
Python with用法:自动关闭文件进程
2019/07/10 Python
DJango的创建和使用详解(默认数据库sqlite3)
2019/11/18 Python
wxPython实现带颜色的进度条
2019/11/19 Python
python生成并处理uuid的实现方式
2020/03/03 Python
Pycharm插件(Grep Console)自定义规则输出颜色日志的方法
2020/05/27 Python
Python 实现简单的客户端认证
2020/07/29 Python
Python logging日志库空间不足问题解决
2020/09/14 Python
总结30个CSS3选择器
2017/04/13 HTML / CSS
详解css3 flex弹性盒自动铺满写法
2020/09/17 HTML / CSS
英格兰橄榄球商店:England Rugby Store
2016/12/17 全球购物
PREMIUM-MALL法国:行李、箱包及配件在线
2019/05/30 全球购物
K8s部署发布Golang应用程序的实现方法
2021/07/16 Golang