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 cx_freeze打包工具处理问题思路及解决办法
Feb 13 Python
python+matplotlib实现动态绘制图片实例代码(交互式绘图)
Jan 20 Python
Python实现计算圆周率π的值到任意位的方法示例
May 08 Python
python检索特定内容的文本文件实例
Jun 05 Python
python使用selenium登录QQ邮箱(附带滑动解锁)
Jan 23 Python
Python Django 简单分页的实现代码解析
Aug 21 Python
Python中的list与tuple集合区别解析
Oct 12 Python
使用Pandas的Series方法绘制图像教程
Dec 04 Python
Python 实现自动获取种子磁力链接方式
Jan 16 Python
Python日志:自定义输出字段 json格式输出方式
Apr 27 Python
python 如何将两个实数矩阵合并为一个复数矩阵
May 19 Python
Python  序列化反序列化和异常处理的问题小结
Dec 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
7个鲜为人知却非常实用的PHP函数
2015/07/01 PHP
Apache启动报错No space left on device: AH00023该怎么解决
2015/10/16 PHP
PHP实现的注册,登录及查询用户资料功能API接口示例
2017/06/06 PHP
PHP基于phpqrcode类生成二维码的方法示例详解
2020/08/07 PHP
PhpStorm2020 + phpstudyV8 +XDebug的教程详解
2020/09/17 PHP
Jquery 基础学习笔记
2009/05/29 Javascript
jquery一般方法介绍 入门参考
2011/06/21 Javascript
js 完美图片新闻轮转效果,腾讯大粤网首页图片轮转改造而来
2011/11/21 Javascript
使用jquery mobile做幻灯播放效果实现步骤
2013/01/04 Javascript
js+csss实现的一个带复选框的下拉框
2014/09/29 Javascript
Javascript通过overflow控制列表闭合与展开的方法
2015/05/15 Javascript
javascript新闻跑马灯实例代码
2020/07/29 Javascript
基于touch.js手势库+zepto.js插件开发图片查看器(滑动、缩放、双击缩放)
2016/11/17 Javascript
浅谈jQuery before和insertBefore的区别
2016/12/04 Javascript
jQuery实现单击按钮遮罩弹出对话框效果(1)
2017/02/20 Javascript
详解如何使用Vue2做服务端渲染
2017/03/29 Javascript
AngularJS实现页面跳转后自动弹出对话框实例代码
2017/08/02 Javascript
vue项目中使用axios上传图片等文件操作
2017/11/02 Javascript
iSlider手机端图片滑动切换插件使用详解
2019/12/24 Javascript
django 使用 request 获取浏览器发送的参数示例代码
2018/06/11 Python
Django管理员账号和密码忘记的完美解决方法
2018/12/06 Python
解决python3.5 正常安装 却不能直接使用Tkinter包的问题
2019/02/22 Python
Python使用到第三方库PyMuPDF图片与pdf相互转换
2019/05/03 Python
利用 Flask 动态展示 Pyecharts 图表数据方法小结
2019/09/04 Python
django 模型字段设置默认值代码
2020/07/15 Python
Python urllib request模块发送请求实现过程解析
2020/12/10 Python
CSS3 Calc实现滚动条出现页面不跳动问题
2017/09/14 HTML / CSS
Mistine官方海外旗舰店:泰国国民彩妆品牌
2016/12/28 全球购物
中软国际Java程序员笔试题
2014/07/19 面试题
给同学的道歉信
2014/01/16 职场文书
机械专业求职信范文
2014/07/15 职场文书
校园会短篇的广播稿
2014/10/21 职场文书
政风行风整改报告
2014/11/06 职场文书
2014年保险公司工作总结
2014/11/22 职场文书
职工食堂管理制度
2015/08/06 职场文书
四则混合运算教学反思
2016/02/23 职场文书