我使用特殊URLopener趕上重定向:
import urllib
class RedirectException(Exception):
def __init__(self, errcode, newurl):
Exception.__init__(self)
self.errcode = errcode
self.newurl = newurl
class MyURLopener(urllib.URLopener):
# Error 301 -- relocated (permanently)
def http_error_301(self, url, fp, errcode, errmsg, headers, data=None):
if headers.has_key('location'):
newurl = headers['location']
elif headers.has_key('uri'):
newurl = headers['uri']
else:
newurl = "Nowhere"
raise RedirectException(errcode, newurl)
# Error 302 -- relocated (temporarily)
http_error_302 = http_error_301
# Error 303 -- relocated (see other)
http_error_303 = http_error_301
# Error 307 -- relocated (temporarily)
http_error_307 = http_error_301
urllib._urlopener = MyURLopener()
現在我需要趕上RedirectException,瞧 - 我知道有一個重定向,我知道的URL。警告 - 我使用Python 2.7的代碼,不知道它是否可以與Python 3一起使用。
來源
2017-05-30 00:29:44
phd
描述你希望看到有一個當行爲重定向。 –
我希望它不會失敗,請轉到重定向頁面並閱讀該網頁。尤其是從http到https重定向到同一頁面。 – anon