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 多线程抓取图片效率对比
Feb 27 Python
Python处理JSON时的值报错及编码报错的两则解决实录
Jun 26 Python
Linux CentOS Python开发环境搭建教程
Nov 28 Python
python批量识别图片指定区域文字内容
Apr 30 Python
Django 数据库同步操作技巧详解
Jul 19 Python
Python代理IP爬虫的新手使用教程
Sep 05 Python
用python爬取历史天气数据的方法示例
Dec 30 Python
关于Pytorch的MNIST数据集的预处理详解
Jan 10 Python
Python反爬虫伪装浏览器进行爬虫
Feb 28 Python
计算Python Numpy向量之间的欧氏距离实例
May 22 Python
详解python tkinter 图片插入问题
Sep 03 Python
Python爬虫进阶之Beautiful Soup库详解
Apr 29 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
DC动画电影《黑暗正义联盟》曝预告 5月5日上线数字平台
2020/04/09 欧美动漫
一个PHP模板,主要想体现一下思路
2006/12/25 PHP
PHP采用XML-RPC构造Web Service实例教程
2014/07/16 PHP
Zend Framework教程之Zend_Db_Table表关联实例详解
2016/03/23 PHP
jQuery 技巧小结
2010/04/02 Javascript
简易js代码实现计算器操作
2013/04/15 Javascript
javascript截取字符串(通过substring实现并支持中英文混合)
2013/06/24 Javascript
jquery JSON的解析方式示例介绍
2014/07/27 Javascript
jQuery 遍历函数详解
2015/07/05 Javascript
JS实现仿微博可关闭弹出层效果
2015/09/21 Javascript
js给table赋值的实例代码
2016/10/13 Javascript
浅谈js算法和流程控制
2016/12/29 Javascript
bootstrap制作jsp页面(根据值让table显示选中)
2017/01/05 Javascript
JavaScript用JSONP跨域请求数据实例详解
2017/01/06 Javascript
详解如何使用Node.js编写命令工具——以vue-cli为例
2017/06/29 Javascript
JS鼠标滚动分页效果示例
2017/07/05 Javascript
Vue一个案例引发的递归组件的使用详解
2018/11/15 Javascript
小程序实现多列选择器
2019/02/15 Javascript
JavaScript中如何调用Java方法
2020/09/16 Javascript
关于javascript中的promise的用法和注意事项(推荐)
2021/01/15 Javascript
Python使用matplotlib实现在坐标系中画一个矩形的方法
2015/05/20 Python
Python中执行存储过程及获取存储过程返回值的方法
2017/10/07 Python
flask框架路由常用定义方式总结
2019/07/23 Python
Python迭代器iterator生成器generator使用解析
2019/10/24 Python
利用keras加载训练好的.H5文件,并实现预测图片
2020/01/24 Python
高性能钓鱼服装:Huk Gear
2019/02/20 全球购物
饿了么订餐官网:外卖、网上订餐
2019/06/28 全球购物
银行会计财务工作个人的自我评价
2013/10/29 职场文书
酒店总经理助理岗位职责
2014/02/01 职场文书
中专自我鉴定
2014/02/05 职场文书
关于责任的演讲稿
2014/05/20 职场文书
党的群众路线教育实践活动制度建设计划
2014/11/03 职场文书
2014年会计工作总结
2014/11/27 职场文书
天坛导游词
2015/02/02 职场文书
关于考试抄袭的检讨书
2019/11/02 职场文书
Python3中最常用的5种线程锁实例总结
2021/07/07 Python