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实现监控linux性能及进程消耗性能的方法
Jul 25 Python
python黑魔法之编码转换
Jan 25 Python
windows安装TensorFlow和Keras遇到的问题及其解决方法
Jul 10 Python
pycharm中显示CSS提示的知识点总结
Jul 29 Python
Python中list循环遍历删除数据的正确方法
Sep 02 Python
python实现猜数字游戏
Mar 25 Python
Centos7 下安装最新的python3.8
Oct 28 Python
Python datetime 格式化 明天,昨天实例
Mar 02 Python
Python telnet登陆功能实现代码
Apr 16 Python
Python 发送邮件方法总结
Aug 10 Python
Python面向对象特殊属性及方法解析
Sep 16 Python
编译 pycaffe时报错:fatal error: numpy/arrayobject.h没有那个文件或目录
Nov 29 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
全国FM电台频率大全 - 29 青海省
2020/03/11 无线电
转PHP手册及PHP编程标准
2006/12/17 PHP
php程序效率优化的一些策略小结
2010/07/17 PHP
解析posix与perl标准的正则表达式区别
2013/06/17 PHP
Yii框架创建cronjob定时任务的方法分析
2017/05/23 PHP
thinkPHP5实现数据库添加内容的方法
2017/10/25 PHP
Jquery chosen动态设置值实例介绍
2013/08/08 Javascript
改变文件域的样式实现思路同时兼容ie、firefox
2013/10/23 Javascript
使用javascript实现ListBox左右全选,单选,多选,全请
2013/11/07 Javascript
JS OffsetParent属性深入解析
2014/01/13 Javascript
JQuery中绑定事件(bind())和移除事件(unbind())
2015/02/27 Javascript
jQuery progressbar通过Ajax请求实现后台进度实时功能
2016/10/11 Javascript
js实现点击每个li节点,都弹出其文本值及修改
2016/12/15 Javascript
vue2项目使用sass的示例代码
2017/06/28 Javascript
vue学习之Vue-Router用法实例分析
2020/01/06 Javascript
ES2020系列之空值合并运算符 '??'
2020/07/22 Javascript
JS实现简易图片自动轮播
2020/10/16 Javascript
[02:25]DOTA2英雄基础教程 熊战士
2014/01/03 DOTA
Python sys.path详细介绍
2013/10/17 Python
Python可跨平台实现获取按键的方法
2015/03/05 Python
用实例详解Python中的Django框架中prefetch_related()函数对数据库查询的优化
2015/04/01 Python
python黑魔法之编码转换
2016/01/25 Python
从零开始学Python第八周:详解网络编程基础(socket)
2016/12/14 Python
将python代码和注释分离的方法
2018/04/21 Python
PyQt5实现简易计算器
2020/05/30 Python
解决Tensorboard 不显示计算图graph的问题
2020/02/15 Python
Python实现AES加密,解密的两种方法
2020/10/03 Python
Python+logging输出到屏幕将log日志写入文件
2020/11/11 Python
荷兰睡眠专家:Beter Bed
2020/11/23 全球购物
质检部岗位职责
2013/11/11 职场文书
请假条范文大全
2014/04/10 职场文书
标准的毕业生自荐信
2014/04/20 职场文书
导师评语大全
2014/04/26 职场文书
公司门卫工作职责
2014/06/28 职场文书
简单了解 MySQL 中相关的锁
2021/05/25 MySQL
Vite + React从零开始搭建一个开源组件库
2022/06/25 Javascript