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中还原JavaScript的escape函数编码后字符串的方法
Aug 22 Python
Python将xml和xsl转换为html的方法
Mar 10 Python
python返回昨天日期的方法
May 13 Python
Python3 加密(hashlib和hmac)模块的实现
Nov 23 Python
python timestamp和datetime之间转换详解
Dec 11 Python
Python实现简单的语音识别系统
Dec 13 Python
pyhton列表转换为数组的实例
Apr 04 Python
python对列进行平移变换的方法(shift)
Jan 10 Python
Jupyter notebook无法导入第三方模块的解决方式
Apr 15 Python
python实现定时发送邮件到指定邮箱
Dec 23 Python
bat批处理之字符串操作的实现
Mar 16 Python
Python内置的数据类型及使用方法
Apr 13 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
第四节--构造函数和析构函数
2006/11/16 PHP
深入理解:单一入口、MVC、ORM、CURD、ActiveRecord概念
2013/06/06 PHP
php中Array2xml类实现数组转化成XML实例
2014/12/08 PHP
php获取数组元素中头一个数组元素值的实现方法
2014/12/20 PHP
图片格式的JavaScript和CSS速查手册
2007/08/20 Javascript
国外Lightbox v2.03.3 最新版 下载
2007/10/17 Javascript
Jquery 获取表单text,areatext,radio,checkbox,select值的代码
2009/11/12 Javascript
简单的两种Extjs formpanel加载数据的方式
2013/11/09 Javascript
JavaScript改变HTML元素的样式改变CSS及元素属性
2013/11/12 Javascript
js简单实现根据身份证号码识别性别年龄生日
2013/11/29 Javascript
jquery高级编程的最佳实践详解
2014/03/23 Javascript
js调用后台、后台调用前台等方法总结
2014/04/17 Javascript
详解AngularJS中的表格使用
2015/06/16 Javascript
jQuery拖拽通过八个点改变div大小
2020/11/29 Javascript
canvas的神奇用法
2017/02/03 Javascript
JavaScript异步上传图片文件的实例代码
2017/07/04 Javascript
VUE中使用MUI方法
2019/02/12 Javascript
element-ui如何防止重复提交的方法步骤
2019/12/09 Javascript
python正常时间和unix时间戳相互转换的方法
2015/04/23 Python
解读Python中degrees()方法的使用
2015/05/18 Python
ubuntu安装mysql pycharm sublime
2018/02/20 Python
python导入坐标点的具体操作
2019/05/10 Python
python 利用pywifi模块实现连接网络破解wifi密码实时监控网络
2019/09/16 Python
Python3 合并二叉树的实现
2019/09/30 Python
python递归调用中的坑:打印有值, 返回却None
2020/03/16 Python
HTML5之SVG 2D入门9—蒙板及mask元素介绍与应用
2013/01/30 HTML / CSS
iHerb台湾:维生素、保健品和健康产品
2018/01/31 全球购物
美国厨房和园艺工具网上商店:Nestneed
2019/08/24 全球购物
CAT鞋加拿大官网:CAT Footwear加拿大
2020/08/05 全球购物
内蒙古鄂尔多斯市市长寄语
2014/04/10 职场文书
授权委托书样本及填写说明
2014/09/19 职场文书
销售人员工作自我评价
2014/09/21 职场文书
展览会邀请函
2015/02/02 职场文书
西安大雁塔导游词
2015/02/10 职场文书
JavaScript控制台的更多功能
2021/04/28 Javascript
golang用type-switch判断interface的实际存储类型
2022/04/14 Golang