컴퓨터/Python
지난 포스트에서 간단하게 음악차트를 가지고 오는 크롤링 프로그램을 구현해 보았습니다.
정상적으로 작동하는 것을 확인할 수 있었지만, 다른 웹페이지를 크롤링하기 위해서 응용을 했을 때 원하는 결과를 못 얻는 경우가 생길 수 있습니다.
이유는 웹 서비스를 제공하는 서버 측에서 불순한 의도로 접근하는 방법을 차단하기 때문입니다.
디도스 공격등 다양한 문제점을 발생시킬 수 있기 때문이죠.
그렇기 때문에 http 요청을 할 때 어떠한 방법으로 접근을 하는지 포함하여 요청을 해야만 올바른 동작을 할 수 있습니다.
Http 요청을 하게 되면 Header 부분에서 User-Agent라는 값으로 어떠한 방법으로 요청을 하고 있는지 정확하게 식별해주는 방법이 필요합니다.
이 User-Agent라는 값을 사용하지 않거나, 서버의 정책상 불순한 의도라고 생각되는 User-Agent값은 서버에서부터 원하는 정보를 제공받을 수 없습니다.
따라서 안전하게 크롤링을 하기 위해서는 User-Agent를 적절하게 사용해 주어야 합니다.
위의 내용에 따라 User-Agent의 정보를 정의하고 포함된 Http요청을 서버에 할 필요성이 생겼습니다.
구현 코드를 통해 어떻게 포함하여 요청을 하는지 확인해 보도록 합시다.
import requests
from bs4 import BeautifulSoup
header = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.75 Safari/537.36"}
response = requests.get("https://www.melon.com/",headers=header)
딕셔너리 형태로 User-Agent의 값을 입력해줍니다.
header = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.75 Safari/537.36"}
response = requests.get("https://www.melon.com/",headers=header)
print(response.status_code) #200 정상적으로 크롤링
response = requests.get("https://www.melon.com/")
print(response.status_code) #406 서버로 부터 제한을 받아 정상적인 응답을 받지 못함
이 방법을 알고 있으면 다양한 크롤링을 하는데 장애를 넘을 수 있습니다.
Python - Selenium 맛보기 (동적 웹 페이지 크롤링) (0) | 2022.05.04 |
---|---|
Python - Beautifulsoup 사용 법 및 예제 (0) | 2022.05.03 |
Python - Web 크롤링/스크래핑/파싱(Crawling / Scraping / Parsing) (0) | 2022.04.06 |
Python - Beautiful Soup ? (HTML / XML 데이터를 가공하기) (0) | 2022.04.02 |
Python - request 패키지의 한계(활용하기 위한 방법) (0) | 2022.04.01 |
91년생 공학엔지니어의 개발일지
TODAY :
YESTER DAY :
TOTAL :
Commnet