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 的 with 语句详解
Jun 13 Python
Python的另外几种语言实现
Jan 29 Python
详解python之配置日志的几种方式
May 22 Python
Python 由字符串函数名得到对应的函数(实例讲解)
Aug 10 Python
python实现报表自动化详解
Nov 16 Python
python使用tornado实现登录和登出
Jul 28 Python
python使用PIL给图片添加文字生成海报示例
Aug 17 Python
Python快速转换numpy数组中Nan和Inf的方法实例说明
Feb 21 Python
Python完成毫秒级抢淘宝大单功能
Jun 06 Python
python覆盖写入,追加写入的实例
Jun 26 Python
Python openpyxl模块原理及用法解析
Jan 19 Python
利用scikitlearn画ROC曲线实例
Jul 02 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
杏林同学录(四)
2006/10/09 PHP
一个PHP并发访问实例代码
2012/09/06 PHP
浅谈PHP变量作用域以及地址引用问题
2013/12/27 PHP
分享十款最出色的PHP安全开发库中文详细介绍
2015/03/22 PHP
JQuery 学习笔记 选择器之二
2009/07/23 Javascript
Javascript 多物体运动的实现
2014/12/24 Javascript
JS实现网页上随机产生超链接地址的方法
2015/11/09 Javascript
javascript匀速运动实现方法分析
2016/01/08 Javascript
JavaScript实现斗地主游戏的思路
2016/02/29 Javascript
Angular在一个页面中使用两个ng-app的方法(二)
2017/02/20 Javascript
vue.js实现刷新当前页面的方法教程
2017/07/05 Javascript
用最简单的方法判断JavaScript中this的指向(推荐)
2017/09/04 Javascript
JS实现标签滚动切换效果
2017/12/25 Javascript
Angularjs实现多图片上传预览功能
2018/07/18 Javascript
自定义javascript验证框架示例【附源码下载】
2019/05/31 Javascript
微信小程序点餐系统开发常见问题汇总
2019/08/06 Javascript
Python中的异常处理相关语句基础学习笔记
2016/07/11 Python
TensorFlow实现模型评估
2018/09/07 Python
实例分析python3实现并发访问水平切分表
2018/09/29 Python
在Python中定义一个常量的方法
2018/11/10 Python
python实现列表的排序方法分享
2019/07/01 Python
python 画3维轨迹图并进行比较的实例
2019/12/06 Python
python opencv实现信用卡的数字识别
2020/01/12 Python
Python实现疫情地图可视化
2021/02/05 Python
Max&Co官网:意大利年轻女性时尚品牌
2017/05/16 全球购物
马来西亚与新加坡长途巴士售票网站:BusOnlineTicket.com
2018/11/05 全球购物
怎样创建、运行java程序
2014/08/01 面试题
北京-环亚运商测试题.net程序员初步测试题
2013/05/28 面试题
实习推荐信
2014/05/10 职场文书
学生逃课检讨书1000字
2014/10/20 职场文书
2015年三八妇女节活动总结
2015/02/06 职场文书
2015年校本培训工作总结
2015/07/24 职场文书
2015年小学实验室工作总结
2015/07/28 职场文书
小学生教师节广播稿
2015/08/19 职场文书
2019年健身俱乐部的创业计划书
2019/08/26 职场文书
解读MySQL的客户端和服务端协议
2021/05/10 MySQL