Python urllib2防止302跳转实例

发布时间:2019-10-23编辑:脚本学堂
本文介绍了Python中使用urllib2防止302跳转的方法,python实现避免302跳转,python的urllib2获取网页(urlopen)会自动重定向,有时需要获取302,301页面的状态信息,就必须获取到转向前的调试信息。

python/urllib2/ target=_blank class=infotextkey>python urllib2模块防止302跳转

python的urllib2获取网页(urlopen)会自动重定向(301,302)。
有时需要获取302,301页面的状态信息。就必须获取到转向前的调试信息。

例子,避免302重定向到新的网页。
 

复制代码 代码示例:
#!/usr/bin/python
# -*- coding: utf-8 -*-
#encoding=utf-8
#Filename:states_code.py
# www.jb200.com
#
 
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://jb200.com')
print html