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写入xml文件的方法
May 08 Python
python编程测试电脑开启最大线程数实例代码
Feb 09 Python
python实现定时压缩指定文件夹发送邮件
Dec 22 Python
python接口调用已训练好的caffe模型测试分类方法
Aug 26 Python
python hash每次调用结果不同的原因
Nov 21 Python
python中的itertools的使用详解
Jan 13 Python
django项目中新增app的2种实现方法
Apr 01 Python
python线程池如何使用
May 28 Python
Python 读取位于包中的数据文件
Aug 07 Python
Python通过fnmatch模块实现文件名匹配
Sep 30 Python
浅谈Python响应式类库RxPy
Jun 14 Python
Python中的xlrd模块使用整理
Jun 15 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删除页面记录 同时刷新页面 删除条件用GET方式获得
2012/01/10 PHP
php获取网页标题和内容函数(不包含html标签)
2014/02/03 PHP
神盾加密解密教程(一)PHP变量可用字符
2014/05/28 PHP
php购物车实现方法
2015/01/03 PHP
PHP使用socket发送HTTP请求的方法
2016/02/14 PHP
laravel框架中控制器的创建和使用方法分析
2019/11/23 PHP
一些Javascript的IE和Firefox(火狐)兼容性的问题总结及常用例子
2009/05/21 Javascript
JavaScript的漂亮的代码片段
2013/06/05 Javascript
批量实现面向对象的实例代码
2013/07/01 Javascript
Jquery同辈元素选中/未选中效果的实例代码
2013/08/01 Javascript
extJS中常用的4种Ajax异步提交方式
2014/03/07 Javascript
禁止iframe页面的所有js脚本如alert及弹出窗口等
2014/09/03 Javascript
JQuery节点元素属性操作方法
2015/06/11 Javascript
Bootstrap每天必学之基础排版
2015/11/20 Javascript
javascript宿主对象之window.navigator详解
2016/09/07 Javascript
JavaScript实现替换字符串中最后一个字符的方法
2017/03/07 Javascript
原生js实现瀑布流布局
2017/03/08 Javascript
JS自定义函数实现时间戳转换成date的方法示例
2017/08/27 Javascript
详解vue-cli之webpack3构建全面提速优化
2017/12/25 Javascript
jq.ajax+php+mysql实现关键字模糊查询(示例讲解)
2018/01/02 Javascript
微信小程序基础教程之worker线程的使用方法
2019/07/15 Javascript
微信小程序 select 下拉框组件功能
2019/09/09 Javascript
深入理解python多进程编程
2016/06/12 Python
python 操作hive pyhs2方式
2019/12/21 Python
python GUI库图形界面开发之PyQt5菜单栏控件QMenuBar的详细使用方法与实例
2020/02/28 Python
Pytorch转tflite方式
2020/05/25 Python
Python selenium使用autoIT上传附件过程详解
2020/05/26 Python
使用PyCharm官方中文语言包汉化PyCharm
2020/11/18 Python
百度JavaScript笔试题
2015/01/15 面试题
关于保护环境的标语
2014/06/09 职场文书
公司法人授权委托书范本
2014/09/12 职场文书
2014坚持党风廉政建设思想汇报
2014/09/18 职场文书
评先进个人材料
2014/12/29 职场文书
Java并发编程必备之Future机制
2021/06/30 Java/Android
一次SQL查询优化原理分析(900W+数据从17s到300ms)
2022/06/10 SQL Server
Go结合Gin导出Mysql数据到Excel表格
2022/08/05 Golang