반응형
요청 - 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
반응형
'source' 카테고리의 다른 글
| MySQL 데이터베이스에 데이터를 삽입하려면 어떻게 해야 합니까? (0) | 2022.11.21 |
|---|---|
| centos7의 mariadb 10에서 열린 파일 제한을 늘릴 수 없습니다. (0) | 2022.11.21 |
| PHP의 변수에 문자열을 추가할 수 있습니까? (0) | 2022.11.21 |
| Node.js 파일 확장자를 가져옵니다. (0) | 2022.11.21 |
| MariaDB: 알 수 없는 데이터 유형 "MYSql_JSON" (0) | 2022.11.21 |