18

Python 2では、次のようにしてurllibからデバッグ出力を取得することができました。

import httplib
import urllib
httplib.HTTPConnection.debuglevel = 1
response = urllib.urlopen('http://example.com').read()

ただし、Python 3では、これはに移動されたようです

http.client.HTTPConnection.set_debuglevel(level)

ただし、http.clientを直接使用するのではなく、urllibを使用しています。httpリクエストがこのようにデバッグ情報を表示するように設定するにはどうすればよいですか?

これが私がこれまでに使用しているものです。デバッグ情報を取得できるようにしたい場合、続行するための最良の方法は何ですか?

#Request Login page
cookiejar = http.cookiejar.CookieJar()
opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cookiejar))
request = urllib.request.Request(options.uri)
add_std_headers(request)
response = opener.open(request)
response_string = response.read().decode("utf8")
# ...
4

2 に答える 2

18

あなたは初めて正しかった。ファイルの先頭に行を追加するだけhttp.client.HTTPConnection.debuglevel = 1で、アプリケーション全体でHTTPデバッグをオンにできます。urllib.requestまだ使用していますhttp.client

単一のハンドラーのデバッグレベルを設定する方法もあるようですが(それをurllib.request.HTTPHandler(debuglevel=1)使用してオープナーを作成および構築することにより)、Python3(3.0b3)のインストールでは実際には実装されていません。最近のバージョンではそれが変わったと思います!

于 2009-04-26T00:34:27.000 に答える
0

https://github.com/urllib3/urllib3/issues/107で、SmithSamuelMは以下を推奨しています:

if self.debug:
            import httplib
            httplib.HTTPConnection.debuglevel = 5
            requests.packages.urllib3.add_stderr_logger()
于 2020-06-10T05:57:46.433 に答える