html 문서 파싱을 통해 웹 크롤링을 도와주는 BeautifulSoup 라이브러리를 알아보자.
BeautifulSoup
웹 크롤링을 도와주는 라이브러리다. BeautifulSoup 혼자 웹 크롤링을 하는 것은 아니고, request 라이브러리가 HTTP Response를 가져오면 BeautifulSoup가 html 파싱을 진행한다.
라이브러리를 이용해 다양한 사이트에서 다양한 정보를 가져올 수 있다.
유의점
어느 사이트의 정보를 다 가져올 수 있는 만큼 주의해야할 점도 있다.
1️⃣ robots.txt

웹사이트 메인 홈페이지 뒤에 /robots.txt를 붙여 검색해 보면 사이트 별로 크롤링에 대한 정책들이 나와 있다. 이걸 위반할 시 책임을 묻게 되므로 주의하자.
위의 구글 예시를 보면 finance 페이지에서 만큼은 정보를 가져오는 것을 허용하는 것 같다.
2️⃣ time.sleep() 필수
코드를 작성하다 보면 많은 요청을 보낼 때가 있다. 이때 시간 지연없이 지나치게 많은 요청을 보내게 되면 DDOS 공격으로 간주되어 IP가 차단될 수 있다. 많은 요청을 보낼 것 같으면 중간에 쉬는 타임을 넣자.
3️⃣ 데이터 저작권
그냥 퍼다 나르면 안되는 데이터가 있다. 이런 것도 신경을 잘 써야할 것이다.
4️⃣ User-Agent 설정

아무런 설정 없이 보내게 되면 python request로 헤더를 보내게 되는데 많은 사이트에서 파이썬 봇으로 오해해 막는 경우가 있다. 이 경우 User-Agent 설정을 해주자.
실습 코드
import requests
from bs4 import BeautifulSoup
def get_news():
# 페이지 요청
url = 'https://www.yna.co.kr/news?site=navi_latest_depth01'
header = {'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36'}
response = requests.get(url, headers=header)
soup = BeautifulSoup(response.text, 'html.parser')
news_list = soup.select(".news-con")
for news in news_list:
title = news.select_one(".tit-wrap").get_text().strip()
print(title)
if __name__ == "__main__":
get_news()
'Security > SK Shieldus Rookies' 카테고리의 다른 글
| [SK 쉴더스 루키즈] openpyxl & schedule (0) | 2026.05.10 |
|---|---|
| [SK 쉴더스 루키즈] SMTP (0) | 2026.05.10 |
| [SK 쉴더스 루키즈] Notion API 연동 실습 (0) | 2026.05.06 |
| [SK 쉴더스 루키즈] Python 문법 1 (0) | 2026.04.29 |
| [SK 쉴더스 루키즈] Git & Github (0) | 2026.04.28 |
