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 获取新浪微博的最新公共微博实例分享
Jul 03 Python
对pandas的dataframe绘图并保存的实现方法
Aug 05 Python
PyQt5每天必学之带有标签的复选框
Apr 19 Python
python日期时间转为字符串或者格式化输出的实例
May 29 Python
python将字符串以utf-8格式保存在txt文件中的方法
Oct 30 Python
Python 中包/模块的 `import` 操作代码
Apr 22 Python
详解用python生成随机数的几种方法
Aug 04 Python
如何在 Django 模板中输出 "{{"
Jan 24 Python
Python修改列表值问题解决方案
Mar 06 Python
详解python的内存分配机制
May 10 Python
Pytorch反向传播中的细节-计算梯度时的默认累加操作
Jun 05 Python
Python提取PDF指定内容并生成新文件
Jun 09 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编程效率的方法
2013/11/07 PHP
Codeigniter框架的更新事务(transaction)BUG及解决方法
2014/07/25 PHP
2014年最新推荐的10款 PHP 开发框架
2014/08/01 PHP
php mysql 封装类实例代码
2016/09/18 PHP
PHP PDOStatement::fetchColumn讲解
2019/01/31 PHP
利用WebBrowser彻底解决Web打印问题(包括后台打印)
2009/06/22 Javascript
爆炸式的JS圆形浮动菜单特效代码
2010/03/03 Javascript
EXTJS FORM HIDDEN TEXTFIELD 赋值 使用value不好用的问题
2011/04/16 Javascript
javascript字符串函数汇总
2015/12/06 Javascript
jQuery使用正则表达式限制文本框只能输入数字
2016/06/18 Javascript
AngularJS ng-template寄宿方式用法分析
2016/11/07 Javascript
js使用Replace结合正则替换重复出现的字符串功能示例
2016/12/27 Javascript
微信小程序之MaterialDesign--input组件详解
2017/02/15 Javascript
Vue中Table组件Select的勾选和取消勾选事件详解
2019/03/19 Javascript
微信小程序实现获取准确的腾讯定位地址功能示例
2019/03/27 Javascript
JS实现滑动插件
2020/01/15 Javascript
通过js随机函数Math.random实现乱序
2020/05/19 Javascript
深入理解Python中的*重复运算符
2017/10/28 Python
python处理csv中的空值方法
2018/06/22 Python
Opencv+Python实现图像运动模糊和高斯模糊的示例
2019/04/11 Python
Django高级编程之自定义Field实现多语言
2019/07/02 Python
Python3如何对urllib和urllib2进行重构
2019/11/25 Python
详解Open Folder as PyCharm Project怎么添加的方法
2020/12/29 Python
vue.js刷新当前页面的实例讲解
2020/12/29 Python
一个基于canvas的移动端图片编辑器的实现
2020/10/28 HTML / CSS
俄罗斯GamePark游戏商店网站:购买游戏、游戏机和配件
2020/03/13 全球购物
公司行政经理岗位职责
2013/12/24 职场文书
安全资金保障制度
2014/01/23 职场文书
新闻编辑求职信
2014/04/09 职场文书
奥巴马获胜演讲稿
2014/05/15 职场文书
销售目标责任书
2014/07/23 职场文书
先进基层党组织材料
2014/12/25 职场文书
2019个人半年工作总结
2019/06/21 职场文书
纯html+css实现Element loading效果
2021/08/02 HTML / CSS
Python制作表白爱心合集
2022/01/22 Python
python使用torch随机初始化参数
2022/03/22 Python