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 相关文章推荐
Django发送html邮件的方法
May 26 Python
Python中几个比较常见的名词解释
Jul 04 Python
解决Python中字符串和数字拼接报错的方法
Oct 23 Python
使用pandas将numpy中的数组数据保存到csv文件的方法
Jun 14 Python
Python实现监控键盘鼠标操作示例【基于pyHook与pythoncom模块】
Sep 04 Python
对python列表里的字典元素去重方法详解
Jan 21 Python
python中树与树的表示知识点总结
Sep 14 Python
Python3 解决读取中文文件txt编码的问题
Dec 20 Python
Python生成器常见问题及解决方案
Mar 21 Python
python软件都是免费的吗
Jun 18 Python
浅析python中特殊文件和特殊函数
Feb 24 Python
基于Python实现将列表数据生成折线图
Mar 23 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
用 PHP5 轻松解析 XML
2006/12/04 PHP
php 操作调试的方法
2012/07/12 PHP
PHP中比较两个字符串找出第一个不同字符位置例子
2014/04/08 PHP
laravel通过创建自定义artisan make命令来新建类文件详解
2017/08/17 PHP
php设计模式之状态模式实例分析【星际争霸游戏案例】
2020/03/26 PHP
IE与FireFox的兼容性问题分析
2007/04/22 Javascript
JavaScript DOM 学习第七章 表单的扩展
2010/02/19 Javascript
Js获取事件对象代码
2010/08/05 Javascript
JS 打印界面的CSS居中代码适用所有浏览器
2014/03/19 Javascript
网页从弹窗页面单选框传值至父页面代码分享
2015/09/29 Javascript
jQuery实现瀑布流布局详解(PC和移动端)
2020/09/01 Javascript
KnockoutJS 3.X API 第四章之事件event绑定
2016/10/10 Javascript
基于JavaScript实现随机颜色输入框
2016/12/10 Javascript
Bootstrap源码解读标签、徽章、缩略图和警示框(8)
2016/12/26 Javascript
HTML5+jQuery实现搜索智能匹配功能
2017/03/24 jQuery
详解nodejs模板引擎制作
2017/06/14 NodeJs
通过js控制时间,一秒一秒自己动的实例
2017/10/25 Javascript
vue嵌套路由与404重定向实现方法分析
2018/05/04 Javascript
layui的layedit富文本赋值方法
2019/09/18 Javascript
Vue elementui字体图标显示问题解决方案
2020/08/18 Javascript
基于JQuery和DWR实现异步数据传递
2020/10/16 jQuery
Python守护进程和脚本单例运行详解
2017/01/06 Python
django框架基于模板 生成 excel(xls) 文件操作示例
2019/06/19 Python
python tkinter图形界面代码统计工具
2019/09/18 Python
python 实现检验33品种数据是否是正态分布
2019/12/09 Python
PyQt实现计数器的方法示例
2021/01/18 Python
Html5饼图绘制实现统计图的方法
2020/08/05 HTML / CSS
HTML5在手机端实现视频全屏展示方法
2020/11/23 HTML / CSS
英国拳击装备购物网站:RDX Sports
2018/01/23 全球购物
疾病防治方案
2014/05/31 职场文书
2015年学生会主席工作总结
2015/04/21 职场文书
离婚被告答辩状
2015/05/22 职场文书
合理化建议书范文
2015/09/14 职场文书
2016年全国爱眼日宣传教育活动总结
2016/04/05 职场文书
浅谈mysql增加索引不生效的几种情况
2021/06/23 MySQL
Python基础教程,Python入门教程(超详细)
2021/06/24 Python