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编程实现微信企业号文本消息推送功能示例
Aug 21 Python
python 获取字符串MD5值方法
May 29 Python
python爬取网页内容转换为PDF文件
Jul 28 Python
Python中的asyncio代码详解
Jun 10 Python
Python 共享变量加锁、释放详解
Aug 28 Python
pyftplib中文乱码问题解决方案
Jan 11 Python
简单了解Python write writelines区别
Feb 27 Python
python thrift 实现 单端口多服务的过程
Jun 08 Python
python实现学生管理系统开发
Jul 24 Python
Python浮点型(float)运算结果不正确的解决方案
Sep 22 Python
Python自动化爬取天眼查数据的实现
Jun 15 Python
Python docx库删除复制paragraph及行高设置图片插入示例
Jul 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
三国漫画《火凤燎原》宣布动画化PV放出 预计2020年播出
2020/03/08 国漫
修改Zend引擎实现PHP源码加密的原理及实践
2008/04/14 PHP
php判断上传的Excel文件中是否有图片及PHPExcel库认识
2013/01/11 PHP
ThinkPHP实现将本地文件打包成zip下载
2014/06/26 PHP
thinkPHP5.0框架模块设计详解
2017/03/18 PHP
BOOM vs RR BO3 第一场2.13
2021/03/10 DOTA
xml转json的js代码
2012/08/28 Javascript
js 用CreateElement动态创建标签示例
2013/11/20 Javascript
JS批量修改PS中图层名称的方法
2014/01/26 Javascript
Javascript中this关键字的一些小知识
2015/03/15 Javascript
jQuery关键词说明插件cluetip使用指南
2015/04/21 Javascript
JavaScript框架是什么?怎样才能叫做框架?
2015/07/01 Javascript
基于jquery步骤进度条源码分享
2015/11/12 Javascript
浅谈jQuery添加的HTML,JS失效的问题
2016/10/05 Javascript
jQuery插件echarts设置折线图中折线线条颜色和折线点颜色的方法
2017/03/03 Javascript
浅谈Node.js之异步流控制
2017/10/25 Javascript
webpack dll打包重复问题优化的解决
2018/10/10 Javascript
浅入深出Vue之组件使用
2019/07/11 Javascript
js获取浏览器地址(获取第1个斜杠后的内容)
2019/09/03 Javascript
基于Element封装一个表格组件tableList的使用方法
2020/06/29 Javascript
[01:43]深扒TI7聊天轮盘语音出处4
2017/05/11 DOTA
[46:53]Secret vs Liquid 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
python模拟登录百度代码分享(获取百度贴吧等级)
2013/12/27 Python
在Python中使用HTML模版的教程
2015/04/29 Python
Python抽象类的新写法
2015/06/18 Python
Python多线程threading模块用法实例分析
2019/05/22 Python
用pycharm开发django项目示例代码
2019/06/13 Python
PyQt5响应回车事件的方法
2019/06/25 Python
pandas的resample重采样的使用
2020/04/24 Python
Python 利用OpenCV给照片换底色的示例代码
2020/08/03 Python
pytorch 把图片数据转化成tensor的操作
2021/03/04 Python
中专自我鉴定范文
2013/10/16 职场文书
家居装修公司创业计划书范文
2014/03/20 职场文书
2014年环卫工作总结
2014/11/22 职场文书
2014年财务工作总结与计划
2014/12/08 职场文书
Python的这些库,你知道多少?
2021/06/09 Python