[SK 쉴더스 루키즈] BeautifulSoup

2026. 5. 10. 18:52·Security/SK Shieldus Rookies

html 문서 파싱을 통해 웹 크롤링을 도와주는 BeautifulSoup 라이브러리를 알아보자.

 

 

BeautifulSoup

웹 크롤링을 도와주는 라이브러리다. BeautifulSoup 혼자 웹 크롤링을 하는 것은 아니고, request 라이브러리가 HTTP Response를 가져오면 BeautifulSoup가 html 파싱을 진행한다.

 

라이브러리를 이용해 다양한 사이트에서 다양한 정보를 가져올 수 있다. 

 

 

유의점

어느 사이트의 정보를 다 가져올 수 있는 만큼 주의해야할 점도 있다.

 

1️⃣ robots.txt 

google.com의 robots.txt (일부발췌)

웹사이트 메인 홈페이지 뒤에 /robots.txt를 붙여 검색해 보면 사이트 별로 크롤링에 대한 정책들이 나와 있다. 이걸 위반할 시 책임을 묻게 되므로 주의하자.  

 

위의 구글 예시를 보면 finance 페이지에서 만큼은 정보를 가져오는 것을 허용하는 것 같다.

 

 

2️⃣ time.sleep() 필수

코드를 작성하다 보면 많은 요청을 보낼 때가 있다. 이때 시간 지연없이 지나치게 많은 요청을 보내게 되면 DDOS 공격으로 간주되어 IP가 차단될 수 있다. 많은 요청을 보낼 것 같으면 중간에 쉬는 타임을 넣자.

 

 

3️⃣ 데이터 저작권

그냥 퍼다 나르면 안되는 데이터가 있다. 이런 것도 신경을 잘 써야할 것이다.

 

 

4️⃣ User-Agent 설정

특정 사이트에 보낸 Request 헤더

 

아무런 설정 없이 보내게 되면 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
'Security/SK Shieldus Rookies' 카테고리의 다른 글
  • [SK 쉴더스 루키즈] openpyxl & schedule
  • [SK 쉴더스 루키즈] SMTP
  • [SK 쉴더스 루키즈] Notion API 연동 실습
  • [SK 쉴더스 루키즈] Python 문법 1
BestTomaTo
BestTomaTo
  • BestTomaTo
    기록보관소
    BestTomaTo
  • 전체
    오늘
    어제
    • 분류 전체보기 (39) N
      • Algorithm (8)
      • Computer Science (3)
      • Backend (3)
      • DevOps (4)
        • Kubernetes (3)
        • Docker (0)
      • Data Engineering (8)
      • Cloud (2)
      • AI (1)
      • Security (6) N
        • SK Shieldus Rookies (6) N
      • Reference (2)
      • Project (1)
      • Experience (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    SQLD
    파이썬 이메일
    홈 서버
    langsmith
    AWS
    sql 개발자
    해커톤 후기
    동기 프로그래밍
    python
    airlfow
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
BestTomaTo
[SK 쉴더스 루키즈] BeautifulSoup
상단으로

티스토리툴바