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 Tkinter基础控件用法
Sep 03 Python
Python内建数据结构详解
Feb 03 Python
使用Python读取安卓手机的屏幕分辨率方法
Mar 31 Python
Python利用Django如何写restful api接口详解
Jun 08 Python
Python logging模块用法示例
Aug 28 Python
Python Matplotlib实现三维数据的散点图绘制
Mar 19 Python
Python使用grequests(gevent+requests)并发发送请求过程解析
Sep 25 Python
python装饰器的特性原理详解
Dec 25 Python
python计算Content-MD5并获取文件的Content-MD5值方式
Apr 03 Python
使用python实现微信小程序自动签到功能
Apr 27 Python
keras做CNN的训练误差loss的下降操作
Jun 22 Python
python简单利用字典破解zip文件口令
Sep 07 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执行linux系统命令的常用函数使用说明
2010/04/27 PHP
在windows平台上构建自己的PHP实现方法(仅适用于php5.2)
2013/07/05 PHP
Laravel5.5 实现后台管理登录的方法(自定义用户表登录)
2019/09/30 PHP
在TP5数据库中四个字段实现无限分类的示例
2019/10/18 PHP
Jquery replace 字符替换实现代码
2010/12/02 Javascript
使用javascript:将其它类型值转换成布尔类型值的解决方法详解
2013/05/07 Javascript
如何实现修改密码时密码框显示保存到cookie的密码
2013/12/10 Javascript
解决jquery操作checkbox火狐下第二次无法勾选问题
2014/02/10 Javascript
JavaScript通过正则表达式实现表单验证电话号码
2014/03/07 Javascript
node.js中的fs.fchown方法使用说明
2014/12/16 Javascript
JS实现同时搜索百度和必应的方法
2015/01/27 Javascript
浅析js中substring和substr的方法
2015/11/09 Javascript
微信小程序中实现一对多发消息详解及实例代码
2017/02/14 Javascript
Angular企业级开发——MVC之控制器详解
2017/02/20 Javascript
JavaScript实现无刷新上传预览图片功能
2017/08/02 Javascript
详解vue组件基础
2018/05/04 Javascript
jQuery实现为table表格动态添加或删除tr功能示例
2019/02/19 jQuery
小程序getLocation需要在app.json中声明permission字段
2019/04/04 Javascript
webpack 处理CSS资源的实现
2019/09/27 Javascript
vue中组件通信详解(父子组件, 爷孙组件, 兄弟组件)
2020/07/27 Javascript
vue 导航锚点_点击平滑滚动,导航栏对应变化详解
2020/08/10 Javascript
Vue左滑组件slider使用详解
2020/08/21 Javascript
[01:59][TI9趣味视频] 全明星赛奖励
2019/08/23 DOTA
Python使用函数默认值实现函数静态变量的方法
2014/08/18 Python
Linux上安装Python的PIL和Pillow库处理图片的实例教程
2016/06/23 Python
python使用socket创建tcp服务器和客户端
2018/04/12 Python
解决Python2.7读写文件中的中文乱码问题
2018/04/12 Python
对Python 窗体(tkinter)文本编辑器(Text)详解
2018/10/11 Python
解决python-docx打包之后找不到default.docx的问题
2020/02/13 Python
一道SQL存储过程面试题
2016/10/07 面试题
如何开发一个JQuery插件
2016/07/28 面试题
Java Servlet的主要功能和作用是什么
2014/02/14 面试题
培训讲师岗位职责
2014/04/13 职场文书
学校爱国卫生月活动总结
2014/06/25 职场文书
高一军训决心书
2015/02/05 职场文书
小学信息技术教学反思
2016/02/16 职场文书