초보자 용 질문에 대해 미리 사과드립니다. 파이썬에서 웹 데이터에 액세스하는 법을 배우는 중이고 requests
패키지에서 예외 처리를 이해하는 데 문제가 있습니다. urllib
패키지를 사용하여 웹 데이터에 액세스 할 때 지금까지요청이있는 잘못된 URL 처리
, 나는이 같은 나쁜 URL을 잡으려고 구조를 제외하고/시도에 urlopen
전화를 포장 :
import urllib, sys
url = 'https://httpbinTYPO.org/' # Note the typo in my URL
try: uh=urllib.urlopen(url)
except:
print 'Failed to open url.'
sys.exit()
text = uh.read()
print text
이 분명 종류의 원유 방법입니다 나쁜 URL이 아닌 모든 종류의 문제를 숨길 수 있기 때문에 그렇게 할 수 있습니다.
import requests, sys
url = 'https://httpbinTYPO.org/' # Note the typo in my URL
r = requests.get(url)
if r.raise_for_status() is not None:
print 'Failed to open url.'
sys.exit()
text = r.text
print text
그러나,이 명확하게 (작동하지 않는 오류가 발생합니다 :이처럼 requests
패키지를 사용하면 문서에서
그게 효과가 있어요. 그래서, 다음 예제 (문서에서)에서 나의 knowor를 보여주기 위해서,'requests.get()'명령이 실행을 멈추지 않는 이유는 무엇입니까 :'bad_r = requests.get ('http://httpbin.org/ 상태/404 ')'. 에러를보기 위해'raise_for_status()'를 사용하는 이유는 무엇입니까? – tcquinn
"오류"에는 여러 유형이 있습니다. 잘못된'URL' (존재하지 않는 웹 애플리케이션의'URL' 또는 잘못된'URL' 구성)을 사용하여 요청하면'ConnectionError','MissingSchema' ...이 오류는 요청을 보낼 수 없다는 것을 의미합니다 . 'HTTP-errors'는 완전히 다른 유형의 에러입니다. 요청이 올바르게 구성되어 전송 될 수 있지만 대상 서버가 원하는 방식으로 처리 할 수없는 경우 'HTTP 오류'(예 : 상태 코드 401, 404, 500 ...)를 얻을 수 있습니다. 이 경우에는'python-request'가 예외를 발생시키지 않으므로'raise_for_status()'를 사용하여 – Andersson
을 얻을 수 있습니다. 알았습니다. 나는 지금 그 구별을 이해한다. 고맙습니다. – tcquinn