python中使用urllib2防止302跳轉(zhuǎn)的代碼例子

字號:


    這篇文章主要介紹了python中使用urllib2防止302跳轉(zhuǎn)的代碼例子,即避免302跳轉(zhuǎn)的實現(xiàn),需要的朋友可以參考下。
    說明:python的urllib2獲取網(wǎng)頁(urlopen)會自動重定向(301,302)。但是,有時候我們需要獲取302,301頁面的狀態(tài)信息。就必須獲取到轉(zhuǎn)向前的調(diào)試信息。
    下面代碼將可以做到避免302重定向到新的網(wǎng)頁
    #!/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