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中几种操作字符串的方法的介绍
Apr 09 Python
python实现DES加密解密方法实例详解
Jun 30 Python
Python实现压缩和解压缩ZIP文件的方法分析
Sep 28 Python
Python Flask-web表单使用详解
Nov 18 Python
pytorch cnn 识别手写的字实现自建图片数据
May 20 Python
python elasticsearch从创建索引到写入数据的全过程
Aug 04 Python
Django app配置多个数据库代码实例
Dec 17 Python
python读取配置文件方式(ini、yaml、xml)
Apr 09 Python
Python通过Schema实现数据验证方式
Nov 12 Python
PyQt实现计数器的方法示例
Jan 18 Python
如何用Django处理gzip数据流
Jan 29 Python
Pytest实现setup和teardown的详细使用详解
Apr 17 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下通过系统信号量加锁方式获取递增序列ID
2009/09/25 PHP
YII2 实现多语言配置的方法分享
2017/01/11 PHP
php无限极分类实现方法分析
2019/07/04 PHP
学习ExtJS form布局
2009/10/08 Javascript
基于jquery的让textarea自适应高度的插件
2010/08/03 Javascript
javascript日期转换 时间戳转日期格式
2011/11/05 Javascript
js中通过split函数分割字符串成数组小例子
2013/09/21 Javascript
JQuery实现的购物车功能(可以减少或者添加商品并自动计算价格)
2015/01/13 Javascript
JavaScript日期时间与时间戳的转换函数分享
2015/01/31 Javascript
JavaScript知识点总结之如何提高性能
2016/01/15 Javascript
JS触发服务器控件的单击事件(详解)
2016/08/06 Javascript
详解angular2封装material2对话框组件
2017/03/03 Javascript
ES6/JavaScript使用技巧分享
2017/12/14 Javascript
nodejs中实现用户注册路由功能
2019/05/20 NodeJs
python使用os.listdir和os.walk获得文件的路径的方法
2017/12/16 Python
Python多项式回归的实现方法
2019/03/11 Python
Python3+Appium实现多台移动设备操作的方法
2019/07/05 Python
Pytorch Tensor基本数学运算详解
2019/12/30 Python
Django Admin后台添加数据库视图过程解析
2020/04/01 Python
pandas DataFrame 数据选取,修改,切片的实现
2020/04/24 Python
伊芙丽官方旗舰店:中国淑女一线品牌
2017/12/01 全球购物
应届大学生自荐信
2013/12/05 职场文书
关于赌博的检讨书
2014/01/08 职场文书
助人为乐表扬信范文
2014/01/14 职场文书
劳动模范事迹材料
2014/01/19 职场文书
会计学专业学生的求职信范文
2014/01/27 职场文书
餐饮收银员岗位职责
2014/02/07 职场文书
大学共青团员个人自我评价
2014/04/16 职场文书
2014年学生会干事工作总结
2014/11/07 职场文书
邀请函格式范文
2015/02/02 职场文书
复兴之路观后感
2015/06/02 职场文书
面试必问:圣杯布局和双飞翼布局的区别
2021/05/13 HTML / CSS
Python排序算法之插入排序及其优化方案详解
2021/06/11 Python
SpringBoot 拦截器妙用你真的了解吗
2021/07/01 Java/Android
Vue3中的Refs和Ref详情
2021/11/11 Vue.js
nginx rewrite功能使用场景分析
2022/05/30 Servers