Python中使用urllib2防止302跳转的代码例子


Posted in Python onJuly 07, 2014

说明:python的urllib2获取网页(urlopen)会自动重定向(301,302)。但是,有时候我们需要获取302,301页面的状态信息。就必须获取到转向前的调试信息。

下面代码将可以做到避免302重定向到新的网页

#!/usr/bin/python
# -*- coding: utf-8 -*-
#encoding=utf-8
#Filename:states_code.py
 
import urllib2
 
class RedirctHandler(urllib2.HTTPRedirectHandler):
  """docstring for RedirctHandler"""
  def http_error_301(self, req, fp, code, msg, headers):
    pass
  def http_error_302(self, req, fp, code, msg, headers):
    pass
 
def getUnRedirectUrl(url,timeout=10):
  req = urllib2.Request(url)
  debug_handler = urllib2.HTTPHandler(debuglevel = 1)
  opener = urllib2.build_opener(debug_handler, RedirctHandler)
 
  html = None
  response = None
  try:
    response = opener.open(url,timeout=timeout)
    html = response.read()
  except urllib2.URLError as e:
    if hasattr(e, 'code'):
      error_info = e.code
    elif hasattr(e, 'reason'):
      error_info = e.reason
  finally:
    if response:
      response.close()
  if html:
    return html
  else:
    return error_info
 
html = getUnRedirectUrl('http://3water.com')
print html
Python 相关文章推荐
Python实现简单多线程任务队列
Feb 27 Python
Python向MySQL批量插数据的实例讲解
Mar 31 Python
python3实现钉钉消息推送的方法示例
Mar 14 Python
python使用MQTT给硬件传输图片的实现方法
May 05 Python
基于python框架Scrapy爬取自己的博客内容过程详解
Aug 05 Python
PyTorch中的Variable变量详解
Jan 07 Python
django之从html页面表单获取输入的数据实例
Mar 16 Python
Python的历史与优缺点整理
May 26 Python
Python用dilb提取照片上人脸的示例
Oct 26 Python
python如何用matplotlib创建三维图表
Jan 26 Python
Python打包为exe详细教程
May 18 Python
Python手拉手教你爬取贝壳房源数据的实战教程
May 21 Python
python中使用urllib2伪造HTTP报头的2个方法
Jul 07 #Python
python实现多线程采集的2个代码例子
Jul 07 #Python
Python程序员开发中常犯的10个错误
Jul 07 #Python
python采用requests库模拟登录和抓取数据的简单示例
Jul 05 #Python
浅析python 中__name__ = '__main__' 的作用
Jul 05 #Python
python在windows下实现备份程序实例
Jul 04 #Python
python调用短信猫控件实现发短信功能实例
Jul 04 #Python
You might like
php cache类代码(php数据缓存类)
2010/04/15 PHP
PHP 无限分类三种方式 非函数的递归调用!
2011/08/26 PHP
PHP父类调用子类方法的代码例子
2014/04/09 PHP
php5.4以上版本GBK编码下htmlspecialchars输出为空问题解决方法汇总
2015/04/03 PHP
phpStudy配置多站点多域名和多端口的方法
2017/09/01 PHP
PHP使用pdo连接access数据库并循环显示数据操作示例
2018/06/05 PHP
PDO::setAttribute讲解
2019/01/29 PHP
prototype与jquery下Ajax实现的差别
2009/09/13 Javascript
jquery中对于批量deferred的处理方法
2014/01/22 Javascript
javascript常用函数归纳整理
2014/10/31 Javascript
JavaScript中常见获取元素的方法汇总
2015/03/04 Javascript
jquery+CSS3实现淘宝移动网页菜单效果
2015/08/31 Javascript
js实现的后台左侧管理菜单代码
2015/09/11 Javascript
基于JavaScript获取鼠标位置的各种方法
2015/12/16 Javascript
不得不分享的JavaScript常用方法函数集(下)
2015/12/25 Javascript
js判断所有表单项不为空则提交表单的实现方法
2016/09/09 Javascript
AngularJS表单和输入验证实例
2016/11/02 Javascript
微信小程序实现瀑布流布局与无限加载的方法详解
2017/05/12 Javascript
vue cli3.0 引入eslint 结合vscode使用
2019/05/27 Javascript
vue组件三大核心概念图文详解
2019/05/30 Javascript
vue实现简单瀑布流布局
2020/05/28 Javascript
Python中使用partial改变方法默认参数实例
2015/04/28 Python
实践Python的爬虫框架Scrapy来抓取豆瓣电影TOP250
2016/01/20 Python
python 实现红包随机生成算法的简单实例
2017/01/04 Python
Python实现判断字符串中包含某个字符的判断函数示例
2018/01/08 Python
Python闭包执行时值的传递方式实例分析
2018/06/04 Python
python读取csv和txt数据转换成向量的实例
2019/02/12 Python
Python的高阶函数用法实例分析
2019/04/11 Python
深入浅析python变量加逗号,的含义
2020/02/22 Python
html5+css3之动画在webapp中的应用
2014/11/21 HTML / CSS
ProForm英国站点:健身房和健身器材网上商店
2019/06/05 全球购物
阿巴庭院:Abba Patio
2019/06/18 全球购物
C语言中一个结构不能包含指向自己的指针吗
2012/05/25 面试题
Ajax的工作原理
2015/12/04 面试题
暑假生活随笔
2015/08/15 职场文书
奥特曼十大神器:奥特手镯在榜,第一是贝利亚的神器
2022/03/18 日漫