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的web框架中中编写日志列表的教程
Apr 30 Python
说一说Python logging
Apr 15 Python
动感网页相册 python编写简单文件夹内图片浏览工具
Aug 17 Python
Django rest framework基本介绍与代码示例
Jan 26 Python
基于python的多进程共享变量正确打开方式
Apr 28 Python
Python机器学习之scikit-learn库中KNN算法的封装与使用方法
Dec 14 Python
利用arcgis的python读取要素的X,Y方法
Dec 22 Python
python 在指定范围内随机生成不重复的n个数实例
Jan 28 Python
python多线程扫描端口(线程池)
Sep 04 Python
PHP基于phpqrcode类库生成二维码过程解析
May 28 Python
QML实现钟表效果
Jun 02 Python
Python select及selectors模块概念用法详解
Jun 22 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
浅析SVN常见问题及解决方法
2013/06/21 PHP
php生成二维码时出现中文乱码的解决方法
2014/12/18 PHP
PHP实现一维数组转二维数组的方法
2015/02/25 PHP
php实现微信公众号无限群发
2015/10/11 PHP
PHP简单实现数字分页功能示例
2016/08/24 PHP
关于jquery性能最佳实践的讨论,与求教
2012/03/30 Javascript
jsvascript图像处理—(计算机视觉应用)图像金字塔
2013/01/15 Javascript
你必须知道的Javascript知识点之"单线程事件驱动"的使用
2013/04/23 Javascript
jquery获取css中的选择器(实例讲解)
2013/12/02 Javascript
详解jQuery中的deferred对象的使用(一)
2016/05/27 Javascript
JavaScript仿微信打飞机游戏
2020/07/05 Javascript
mongoose设置unique不生效问题的解决及如何移除unique的限制
2017/11/07 Javascript
setTimeout与setInterval的区别浅析
2019/03/23 Javascript
vue指令之表单控件绑定v-model v-model与v-bind结合使用
2019/04/17 Javascript
vue实现下拉加载其实没那么复杂
2019/08/13 Javascript
js+canvas实现两张图片合并成一张图片的方法
2019/11/01 Javascript
安装Python的web.py框架并从hello world开始编程
2015/04/25 Python
Python中处理字符串之isalpha()方法的使用
2015/05/18 Python
Python学习pygal绘制线图代码分享
2017/12/09 Python
Python中那些 Pythonic的写法详解
2019/07/02 Python
Nginx+Uwsgi+Django 项目部署到服务器的思路详解
2020/05/08 Python
python中通过pip安装库文件时出现“EnvironmentError: [WinError 5] 拒绝访问”的问题及解决方案
2020/08/11 Python
Python开发入门——迭代的基本使用
2020/09/03 Python
scrapy头部修改的方法详解
2020/12/06 Python
简单html5代码获取地理位置
2014/03/31 HTML / CSS
HTML5 Canvas 绘图——使用 Canvas 绘制图形图文教程 使用html5 canvas 绘制精美的图
2015/08/31 HTML / CSS
智能钱包:Ekster
2019/11/21 全球购物
eBay美国官网:eBay.com
2020/10/24 全球购物
十佳护士获奖感言
2014/02/18 职场文书
合作经营协议书范本
2014/04/17 职场文书
局领导领导班子四风对照检查材料
2014/09/27 职场文书
租车协议书
2015/01/27 职场文书
离婚答辩状怎么写
2015/05/22 职场文书
css实现两栏布局,左侧固定宽,右侧自适应的多种方法
2021/08/07 HTML / CSS
服务器间如何实现文件共享
2022/05/20 Servers
一文搞懂Java中的注解和反射
2022/06/21 Java/Android