이번에는 파이썬의 requests 모듈을 사용해 웹사이트의 상태 코드를 확인하는 방법을 배워보자. 웹사이트가 정상적으로 응답하는지 확인하는 것은 매우 중요하다. 이를 위해 requests 모듈의 get 함수를 사용할 것이다.
URL 수정 및 준비
먼저, URL 리스트를 수정해서 https://로 시작하도록 만든 후, 각 웹사이트에 요청을 보낸다.
from requests import get
websites = (
"google.com",
"airbnb.com",
"https://twitter.com",
"facebook.com"
)
for website in websites:
if not website.startswith("https://"):
website = f"https://{website}"
response = get(website)
print(response)
이 코드를 실행하면 <Response [200]>와 같은 결과가 나온다. 여기서 200은 웹사이트가 성공적으로 응답했다는 의미이다.
HTTP 상태 코드란?
인터넷은 HTTP 프로토콜에 기반하고 있다. 컴퓨터들이 서로 소통하는 방식은 HTTP 요청(request)과 응답(response)이다. 웹사이트가 요청에 어떻게 응답했는지 알 수 있는 방법 중 하나가 바로 HTTP 상태 코드이다.
예를 들면
- 200: 요청이 성공적으로 처리되었다.
- 404: 요청한 페이지를 찾을 수 없다.
- 500: 서버에 오류가 발생했다.
https://developer.mozilla.org/en-US/docs/Web/HTTP/Status
상태 코드 확인
GET 함수로 요청을 보내면 응답(response) 객체가 반환된다. 반환된 객체에는 100, 200 과 같은 http 상태 코드가 포함되어 있다. 만약 string 이 포함된 <Response [200]> 코드가 출력되는게 싫고 , 200 만 깔끔하게 출력되길 원한다면 response.status_code를 사용하면 된다.
from requests import get
websites = (
"google.com",
"airbnb.com",
"https://twitter.com",
"facebook.com"
)
for website in websites:
if not website.startswith("https://"):
website = f"https://{website}"
response = get(website)
print(response.status_code)
이 코드를 실행하면 각 웹사이트의 상태 코드가 출력된다.
이제 상태 코드가 200이면 "OK", 그렇지 않으면 "Fail"이라고 출력하도록 해보자.
from requests import get
websites = (
"google.com",
"airbnb.com",
"https://twitter.com",
"facebook.com"
)
for website in websites:
if not website.startswith("https://"):
website = f"https://{website}"
response = get(website)
if response.status_code == 200:
print(f"{website} is OK")
else:
print(f"{website} is not OK")
마지막으로, 각 웹사이트의 상태 결과를 딕셔너리에 저장해보자.
from requests import get
websites = (
"google.com",
"airbnb.com",
"https://twitter.com",
"facebook.com"
)
results = {}
for website in websites:
if not website.startswith("https://"):
website = f"https://{website}"
response = get(website)
if response.status_code == 200:
results[website] = "OK"
else:
results[website] = "Fail"
print(results)
이 코드를 실행하면 다음과 같은 결과가 출력된다:
마지막으로 http 상태 코드는 200 뿐만 아니라 다양한 코드들이 있다. 다양한 상태 값을 나타낼 수 있도록,
코드를 나누어 작성해보았다.
from requests import get
websites = (
"google.com",
"airbnb.com",
"https://twitter.com",
"facebook.com"
)
results = {}
for website in websites:
if not website.startswith("https://"):
website = f"https://{website}"
response = get(website)
if response.status_code < 200:
results[website] = "Information Only"
elif response.status_code < 300:
results[website] = "OK"
elif response.status_code < 400:
results[website] = "redirection"
elif response.status_code < 500:
results[website] = "Client Error"
elif response.status_code < 600:
results[website] = "Server error"
else:
results[website] = "Failed"
print(results)
'파이썬' 카테고리의 다른 글
파이썬 클래스 이해하기 (2) | 2024.06.08 |
---|---|
파이썬 arguments 에 대해 알아보기 (1) | 2024.06.08 |
파이썬 requests 모듈로 웹사이트 요청 보내기 (0) | 2024.06.07 |
URL Formatting (0) | 2024.06.07 |
파이썬 f-string: 문자열 포맷팅 쉽게 하기 (0) | 2024.06.07 |