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程序与C程序的结合使用
Apr 07 Python
pygame学习笔记(6):完成一个简单的游戏
Apr 15 Python
python操作MySQL 模拟简单银行转账操作
Sep 27 Python
基于python中staticmethod和classmethod的区别(详解)
Oct 24 Python
python实现将一个数组逆序输出的方法
Jun 25 Python
python实现关闭第三方窗口的方法
Jun 28 Python
详解django中Template语言
Feb 22 Python
PYQT5 vscode联合操作qtdesigner的方法
Mar 24 Python
Python 的 __str__ 和 __repr__ 方法对比
Sep 02 Python
Python爬取股票信息,并可视化数据的示例
Sep 26 Python
python安装第三方库如xlrd的方法
Oct 31 Python
python字符串的一些常见实用操作
Apr 06 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获取当前所在目录位置的方法
2014/11/26 PHP
PHP Callable强制指定回调类型的方法
2016/08/30 PHP
微信公众号开发客服接口实例代码
2016/10/21 PHP
php json转换相关知识(小结)
2018/12/21 PHP
php反射学习之不用new方法实例化类操作示例
2019/06/14 PHP
javascript 写类方式之十
2009/07/05 Javascript
用AJAX返回HTML片段中的JavaScript脚本
2010/01/04 Javascript
javascript面向对象编程代码
2011/12/19 Javascript
jquery插件开发之实现jquery手风琴功能分享
2014/03/10 Javascript
jquery实现在页面加载完毕后获取图片高度或宽度
2014/06/16 Javascript
z-blog SyntaxHighlighter 长代码无法换行解决办法(jquery)
2014/11/16 Javascript
angularjs中的e2e测试实例
2014/12/06 Javascript
JavaScript中的this,call,apply使用及区别详解
2016/01/29 Javascript
详解vue.js+UEditor集成 [前后端分离项目]
2017/07/07 Javascript
微信小程序icon组件使用详解
2018/01/31 Javascript
使用JavaScript破解web
2018/09/28 Javascript
详解javascript设计模式三:代理模式
2019/03/25 Javascript
vue实现路由切换改变title功能
2019/05/28 Javascript
react实现同页面三级跳转路由布局
2019/09/26 Javascript
vue表单数据交互提交演示教程
2019/11/13 Javascript
vue点击按钮动态创建与删除组件功能
2019/12/29 Javascript
在Python中实现贪婪排名算法的教程
2015/04/17 Python
matplotlib 输出保存指定尺寸的图片方法
2018/05/24 Python
Python字典的核心底层原理讲解
2019/01/24 Python
Python标准库使用OrderedDict类的实例讲解
2019/02/14 Python
python  文件的基本操作 菜中菜功能的实例代码
2019/07/17 Python
python利用百度云接口实现车牌识别的示例
2020/02/21 Python
HTML5 通过Vedio标签实现视频循环播放的示例代码
2020/08/05 HTML / CSS
婚鞋、新娘鞋、礼服鞋、童鞋:Nina Shoes
2019/09/04 全球购物
大学生素质拓展活动方案
2014/02/11 职场文书
大二学习计划书范文
2014/04/27 职场文书
商场租赁意向书
2014/07/30 职场文书
2015年财务部年度工作总结
2015/05/19 职场文书
SQL Server 数据库实验课第五周——常用查询条件
2021/04/05 SQL Server
解决pycharm下载库时出现Failed to install package的问题
2021/09/04 Python
CentOS7 minimal 最小化安装网络设置过程
2022/12/24 Servers