안녕 유래 커뮤니티를 켤 수없는, 내가 urllib.request 표준 라이브러리에 익숙해 대신 wget과의 작업에서 내 스크립트에서 사용하기 위해 노력하고있어파이썬 3 URLLIB 및 http.client - 디버그 메시지
. 그러나 IDLE이나 스크립트 파일을 사용하지 않거나 commandy를 cmd (py)에 수동으로 입력하지 않으면 자세한 HTTP 메시지를 표시 할 수 없습니다.
필자는 Windows 7 x64에서 Python을 사용하고 있고 3.6.1rc1을 포함하여 3.5 및 3.6을 시도했지만 성공하지 못했습니다. 그래서 여기
http.client.HTTPConnection.debuglevel = 1
을 내 샘플 코드입니다 :
메시지는 아마도이 명령을 사용하여 설정되어 있습니다. 그것은 작동하지만 세부 사항은 표시되지 않습니다 :
import http.client
import urllib.request
http.client.HTTPConnection.debuglevel = 1
response = urllib.request.urlopen('http://stackoverflow.com')
content = response.read()
with open("stack.html", "wb") as file:
file.write(content)
나는 노력했다 (1) 성공하지 .set_debuglevel를 사용하여. 여기에 몇 년 된 질문이있는 것 같습니다 Turning on debug output for python 3 urllib 그러나 이것은 내가 가지고있는 것과 동일하며 작동하지 않습니다. 또한이 질문의 의견 사용자 에 엔 치 Hsuan는이 버그와 버그가 그래서 난이 최근 파이썬 버전에서 해결 기대 년 6 월 2016 년 폐쇄되었다 여기 https://bugs.python.org/issue26892
을보고 말한다.
어쩌면 내가 뭔가를 놓치고 있습니다 (예 : 다른 뭔가를 사용하도록 설정/설치해야 함 등). 그러나 이것에 시간을 할애하여 막 다른 골목에 도달했습니다.
Windows의 Python 3에서 urllib로 http 세부 메시지를 표시하는 효과적인 방법이 있습니까?
당신에게편집 감사합니다 응답은 PVG하여 간단한 예에 작품을 제안하지만 난 그게 로그인이 필요한 경우에 작업을 할 수 없습니다. HTTPBasicAuthHandler에는이 debuglevel 속성이 없습니다. 그리고 여러개의 핸들러를 하나의 오프너에 결합하려고 시도해도 작동하지 않습니다.
userName = 'mylogin'
passWord = 'mypassword'
top_level_url = 'http://page-to-login.com'
# create an authorization handler
passman = urllib.request.HTTPPasswordMgrWithDefaultRealm()
passman.add_password(None, top_level_url, userName, passWord);
auth_handler = urllib.request.HTTPBasicAuthHandler(passman)
opener = urllib.request.build_opener(auth_handler)
urllib.request.install_opener(opener)
result = opener.open(top_level_url)
content = result.read()
정확히 어떤 버그 또는 단지를위한 테스트 케이스에 있어요 urllib3로 전환하고'urllib3.add_stderr_logger()'를 사용하십시오. – pvg