[python] 요청-404를 받고 있는지 확인하는 방법

Requests 라이브러리를 사용하고 웹 사이트에 액세스하여 다음 코드로 웹 사이트에서 데이터를 수집하고 있습니다.

r = requests.get(url)

부적절한 URL을 입력하고 404 오류가 반환되는 경우 오류 테스트를 추가하고 싶습니다. 의도적으로 잘못된 URL을 입력하면 다음과 같이 할 수 있습니다.

print r

나는 이것을 얻는다 :

<Response [404]>

편집하다:

나는 그것을 테스트하는 방법을 알고 싶다. 객체 유형은 여전히 ​​동일합니다. r.content또는을 할 때 r.text사용자 지정 404 페이지의 HTML을 가져옵니다.



답변

상기 봐 r.status_code속성 :

if r.status_code == 404:
    # A 404 was issued.

데모:

>>> import requests
>>> r = requests.get('http://httpbin.org/status/404')
>>> r.status_code
404

requests오류 코드 (4xx 또는 5xx)에 대한 예외를 발생 시키 려면 다음 을 호출하십시오 r.raise_for_status().

>>> r = requests.get('http://httpbin.org/status/404')
>>> r.raise_for_status()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "requests/models.py", line 664, in raise_for_status
    raise http_error
requests.exceptions.HTTPError: 404 Client Error: NOT FOUND
>>> r = requests.get('http://httpbin.org/status/200')
>>> r.raise_for_status()
>>> # no exception raised.

부울 컨텍스트에서 응답 오브젝트를 테스트 할 수도 있습니다. 상태 코드가 오류 코드 (4xx 또는 5xx)가 아닌 경우 ‘true’로 간주됩니다.

if r:
    # successful response

보다 명확하게하려면을 사용하십시오 if r.ok:.


답변