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将html转成PDF的实现代码(包含中文)
Mar 04 Python
在Python中的Django框架中进行字符串翻译
Jul 27 Python
linux下python使用sendmail发送邮件
May 22 Python
python画折线图的程序
Jul 26 Python
Python爬取qq空间说说的实例代码
Aug 17 Python
python实现RabbitMQ的消息队列的示例代码
Nov 08 Python
python使用Plotly绘图工具绘制柱状图
Apr 01 Python
python实现Dijkstra算法的最短路径问题
Jun 21 Python
Python shelve模块实现解析
Aug 28 Python
Python装饰器结合递归原理解析
Jul 02 Python
Python 解析简单的XML数据
Jul 24 Python
python爬虫利用代理池更换IP的方法步骤
Feb 21 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
极典R601SW收音机
2021/03/02 无线电
PHP $_SERVER详解
2009/01/16 PHP
php中用foreach来操作数组的代码
2011/07/17 PHP
php获取指定(访客)IP所有信息(地址、邮政编码、国家、经纬度等)的方法
2015/07/06 PHP
PHP汉字转换拼音的函数代码
2015/12/30 PHP
准确获得页面、窗口高度及宽度的JS
2006/11/26 Javascript
JavaScript 对象模型 执行模型
2010/10/15 Javascript
js实现可键盘控制的简单抽奖程序
2016/07/13 Javascript
jQuery复制节点用法示例(clone方法)
2016/09/08 Javascript
Bootstrap select多选下拉框实现代码
2016/12/23 Javascript
AngularJS使用带属性值的ng-app指令实现自定义模块自动加载的方法
2017/01/04 Javascript
Vue使用vue-cli创建项目
2017/09/01 Javascript
详解基于DllPlugin和DllReferencePlugin的webpack构建优化
2018/06/28 Javascript
vue-cli 3.x配置跨域代理的实现方法
2019/04/12 Javascript
小程序开发踩坑:页面窗口定位(相对于浏览器定位)(推荐)
2019/04/25 Javascript
Echarts地图添加引导线效果(labelLine)
2019/09/30 Javascript
Nodejs技巧之Exceljs表格操作用法示例
2019/11/06 NodeJs
Vue.js 实现地址管理页面思路详解(地址添加、编辑、删除和设置默认地址)
2019/12/11 Javascript
vue结合el-upload实现腾讯云视频上传功能
2020/07/01 Javascript
零基础写python爬虫之抓取百度贴吧代码分享
2014/11/06 Python
python数据处理实战(必看篇)
2017/06/11 Python
教你使用python画一朵花送女朋友
2018/03/29 Python
python实现按长宽比缩放图片
2018/06/07 Python
pygame游戏之旅 添加游戏界面按键图形
2018/11/20 Python
在python里从协程返回一个值的示例
2019/02/19 Python
PyQt5根据控件Id获取控件对象的方法
2019/06/25 Python
Python中list的交、并、差集获取方法示例
2019/08/01 Python
Python Multiprocessing多进程 使用tqdm显示进度条的实现
2019/08/13 Python
python函数不定长参数使用方法解析
2019/12/14 Python
Django 路由层URLconf的实现
2019/12/30 Python
京东奢侈品:全球奢侈品牌
2018/03/17 全球购物
无财产无子女离婚协议书范文
2014/09/14 职场文书
欢迎新生标语
2014/10/06 职场文书
react国际化react-intl的使用
2021/05/06 Javascript
怎么禁用Win11输入法 最新Win11输入法关闭教程
2022/08/05 数码科技
postgresql如何找到表中重复数据的行并删除
2023/05/08 MySQL