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中wx将图标显示在右下角的脚本代码
Mar 08 Python
在Python上基于Markov链生成伪随机文本的教程
Apr 17 Python
通过Python来使用七牛云存储的方法详解
Aug 07 Python
python3判断url链接是否为404的方法
Aug 10 Python
基于python if 判断选择结构的实例详解
May 06 Python
Numpy数组array和矩阵matrix转换方法
Aug 05 Python
基于django ManyToMany 使用的注意事项详解
Aug 09 Python
Python实现病毒仿真器的方法示例(附demo)
Feb 19 Python
Selenium 滚动页面至元素可见的方法
Mar 18 Python
浅谈Python中文件夹和python package包的区别
Jun 01 Python
python 模块导入问题汇总
Feb 01 Python
拒绝盗图!教你怎么用python给图片加水印
Jun 04 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
《APMServ 5.1.2》使用图解
2006/10/23 PHP
9段PHP实用功能的代码推荐
2014/10/14 PHP
JS+PHP实现用户输入数字后显示最大的值及所在位置
2017/06/19 PHP
PHP的PDO大对象(LOBs)
2019/01/27 PHP
在laravel框架中实现封装公共方法全局调用
2019/10/14 PHP
js 无提示关闭浏览器页面的代码
2010/03/09 Javascript
jquery动态添加元素事件失效问题解决方法
2014/05/23 Javascript
jQuery简易图片放大特效示例代码
2014/06/09 Javascript
js实现有时间限制消失的图片方法
2015/02/27 Javascript
jquery实现手风琴效果
2015/11/20 Javascript
JavaScript数据结构与算法之栈与队列
2016/01/29 Javascript
盘点javascript 正则表达式中 中括号的【坑】
2016/03/16 Javascript
Bootstrap开关(switch)控件学习笔记分享
2016/05/30 Javascript
有关suggest快速删除后仍然出现下拉列表的bug问题
2016/12/02 Javascript
jQuery动态产生select option下拉列表
2017/03/15 Javascript
ionic2打包android时gradle无法下载的解决方法
2017/04/05 Javascript
深入理解vue Render函数
2017/07/19 Javascript
Angular网络请求的封装方法
2018/05/22 Javascript
如何获取vue单文件自身源码路径
2019/05/06 Javascript
JS实现排行榜文字向上滚动轮播效果
2019/11/26 Javascript
基于javascript实现贪吃蛇经典小游戏
2020/04/10 Javascript
python 捕获 shell/bash 脚本的输出结果实例
2017/01/04 Python
Win7下Python与Tensorflow-CPU版开发环境的安装与配置过程
2018/01/04 Python
python 实现批量替换文本中的某部分内容
2019/12/13 Python
在python下实现word2vec词向量训练与加载实例
2020/06/09 Python
使用HTML5在网页中嵌入音频和视频播放的基本方法
2016/02/22 HTML / CSS
HTML5中判断横屏竖屏的方法(移动端)
2016/08/04 HTML / CSS
关于canvas绘制模糊问题的解决方法
2019/09/24 HTML / CSS
阿联酋手表和配饰购物网站:Rivolishop
2019/11/25 全球购物
explicit和implicit的含义
2012/11/15 面试题
十岁生日父母答谢词
2014/01/18 职场文书
妈妈的账单教学反思
2014/02/06 职场文书
语文教学随笔感言
2014/02/18 职场文书
高校优秀辅导员事迹材料
2014/05/07 职场文书
2015年七一建党节活动方案
2015/05/05 职场文书
致接力运动员加油稿
2015/07/21 职场文书