source

요청 - 404를 받을 수 있는지 확인하는 방법

itover 2022. 11. 21. 22:18
반응형

요청 - 404를 받을 수 있는지 확인하는 방법

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

r = requests.get(url)

잘못된 URL이 입력되어 404 오류가 반환되었을 때 오류 테스트를 추가하고 싶습니다.의도적으로 잘못된 URL을 입력한 경우 다음 절차를 수행합니다.

print r

알겠네.

<Response [404]>

편집:

나는 그것을 테스트하는 방법을 알고 싶다.개체 유형은 여전히 동일합니다.할 때r.content또는r.text커스텀 404 페이지의 HTML을 간단하게 취득할 수 있습니다.

Atribute를 확인합니다.

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:.

요청이 다른 함수 내에서 이루어졌지만 더 높은 수준에서 오류를 파악하려면 예외에서 직접 상태 코드를 가져올 수도 있습니다.내 경우 기능이 응답을 전달하기 전에 HTTPerror가 발생했기 때문에 응답에 액세스할 수 없었습니다.저는 다음과 같은 일을 하게 되었습니다.

try:
     r = function_calling_request(the_request)
except HTTPError as e:
     if e.response.status_code == 404:
          return do_stuff_if_not_found()

언급URL : https://stackoverflow.com/questions/15258728/requests-how-to-tell-if-youre-getting-a-404

반응형