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实现测试磁盘性能的方法
Mar 12 Python
Python中endswith()函数的基本使用
Apr 07 Python
关于pycharm中pip版本10.0无法使用的解决办法
Oct 10 Python
python输入错误后删除的方法
Oct 12 Python
Django框架之中间件MiddleWare的实现
Dec 30 Python
Python获取、格式化当前时间日期的方法
Feb 10 Python
Eclipse配置python默认头过程图解
Apr 26 Python
tensorflow pb to tflite 精度下降详解
May 25 Python
tensorflow 2.1.0 安装与实战教程(CASIA FACE v5)
Jun 30 Python
python使用Word2Vec进行情感分析解析
Jul 31 Python
python实现扫雷游戏的示例
Oct 20 Python
python 下划线的不同用法
Oct 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的sprintf函数的用法 控制浮点数格式
2014/02/14 PHP
php获取文件夹路径内的图片以及分页显示示例
2014/03/11 PHP
destoon数据库表说明汇总
2014/07/15 PHP
Thinkphp+smarty+uploadify实现无刷新上传
2015/07/30 PHP
php+javascript实现的动态显示服务器运行程序进度条功能示例
2017/08/07 PHP
Jquery 滑入滑出效果实现代码
2010/03/27 Javascript
node.js中的fs.symlink方法使用说明
2014/12/15 Javascript
javascript内置对象操作详解
2015/02/04 Javascript
常用的JQuery函数及功能小结
2016/03/24 Javascript
动态加载js文件简单示例
2016/04/21 Javascript
js解决软键盘遮挡输入框的问题分享
2017/12/19 Javascript
JS实现的判断方法、变量是否存在功能示例
2020/03/28 Javascript
vue 使用自定义指令实现表单校验的方法
2018/08/28 Javascript
小谈angular ng deploy的实现
2020/04/07 Javascript
JavaScript文档加载模式以及元素获取
2020/07/28 Javascript
vue cli3.0打包上线静态资源找不到路径的解决操作
2020/08/03 Javascript
简单理解Python中基于生成器的状态机
2015/04/13 Python
用实例解释Python中的继承和多态的概念
2015/04/27 Python
Python变量和字符串详解
2017/04/29 Python
python批量设置多个Excel文件页眉页脚的脚本
2018/03/14 Python
详解django三种文件下载方式
2018/04/06 Python
influx+grafana自定义python采集数据和一些坑的总结
2018/09/17 Python
Python 读取用户指令和格式化打印实现解析
2019/09/02 Python
Python 多线程C段扫描、检测 Ping扫描脚本的实现
2020/09/03 Python
Python 使用Opencv实现目标检测与识别的示例代码
2020/09/08 Python
Python 虚拟环境工作原理解析
2020/12/24 Python
详解canvas绘制网络字体几种方法
2019/08/27 HTML / CSS
HTML5触摸事件(touchstart、touchmove和touchend)的实现
2020/05/08 HTML / CSS
大学生毕业自我鉴定范文
2013/11/03 职场文书
大学生饮食连锁店创业计划书
2014/01/17 职场文书
海飞丝的广告词
2014/03/20 职场文书
校园会短篇的广播稿
2014/10/21 职场文书
听证会主持词
2015/07/03 职场文书
小学运动会前导词
2015/07/20 职场文书
酒桌上的祝酒词
2015/08/12 职场文书
忠诚教育学习心得体会
2016/01/23 职场文书