如何禁用 python3 urllib.request 中的自动重定向?

Yve*_*man 7 urllib python-3.x

Python3 urllib.request 会自动进行 301/302 重定向,如何禁用此行为?

Yve*_*man 11

库“requests”使它变得更容易,但如果您需要或想要使用 urllib.request,这可以工作:

from urllib import request
import urllib.error

class NoRedirect(request.HTTPRedirectHandler):
    def redirect_request(self, req, fp, code, msg, headers, newurl):
        return None


opener = request.build_opener(NoRedirect)
request.install_opener(opener)

try:
    r = request.urlopen('http://google.com')
except urllib.error.HTTPError as e:
    r = e

print(r.status)
print(dir(r))
Run Code Online (Sandbox Code Playgroud)

  • 如果问题是“如何使用 Y 库实现 X”,那么答案不应该是“很简单,使用 Z 库”。 (9认同)