我想知道如何阻止 urllib2 跟踪我选择的 url 上的重定向请求。我在浏览时发现了这段代码,但它似乎在全球范围内都有效,我只希望它禁用某个网址上的重定向:
import urllib2
class RedirectHandler(urllib2.HTTPRedirectHandler):
def http_error_302(self, req, fp, code, msg, headers):
result = urllib2.HTTPError(req.get_full_url(), code, msg, headers, fp)
result.status = code
return result
http_error_301 = http_error_303 = http_error_307 = http_error_302
opener = urllib2.build_opener(RedirectHandler())
webpage = opener.open('http://www.website.com').geturl()
print webpage
我还应该提到,我正在使用 urllib.urlopen('site.com') 请求一个网址,并且我希望允许发生第一个重定向,例如,site.com 重定向到 site.com/redirect 但随后它尝试再次从 site.com/redirect 重定向到 site.com/secondredirect 我希望脚本能够识别 url 中的“secondredirect”并阻止该请求发生。我希望我已经很好地解释了这一点,并希望看到一些答复,因为我花了几个小时试图解决这个问题:头痛:
import urllib.request
class RedirectFilter(urllib.request.HTTPRedirectHandler):
def redirect_request(self, req, fp, code, msg, hdrs, newurl):
if newurl.endswith('.jpg'):
return None # do not redirect, HTTPError will be raised
return urllib.request.HTTPRedirectHandler.redirect_request(self, req, fp, code, msg, hdrs, newurl)
opener = urllib.request.build_opener(RedirectFilter)
opener.open('http://example.com/')
这是针对 Python 3 的。对于 Python 2 替换urllib.request
with urllib2
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)