Python中使用urllib2防止302跳转的代码例子

yipeiwu_com6年前Python基础

说明: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://jb51.net')
print html


相关文章

Python使用reportlab模块生成PDF格式的文档

(1)使用python生成pdf文档需要的最基本的包是pdfgen。它属于reportlab模块,而reportlab模块并没有默认集成到python的安装包中,所以需要安装该模块。 (...

浅谈python numpy中nonzero()的用法

nonzero函数返回非零元素的目录。 返回值为元组, 两个值分别为两个维度, 包含了相应维度上非零元素的目录值。 import numpy as np A = np.mat...

python中去空格函数的用法

本文简单介绍了Python中去空格函数的用法,这是一个很实用的函数,希望对大家的Python程序设计有所帮助。具体分析如下: 在Python中字符串处理函数里有三个去空格的函数: str...

关于Python元祖,列表,字典,集合的比较

定义 方法 列表 可以包含不同类型的对象,可以增减元素,可以跟其他的列表结合或者把一...

Python列表list数组array用法实例解析

本文以实例形式详细讲述了Python列表list数组array用法。分享给大家供大家参考。具体如下: Python中的列表(list)类似于C#中的可变数组(ArrayList),用于顺...