ssung_데이터 엔지니어링/2주차_파이썬으로 웹 다루기

HTML Parser, BeautifulSoup

ssungcohol 2023. 10. 25. 16:47

HTML Parser, BeautifulSoup

  • 웹 스크랩핑을 할 때, 원하는 요소만 가져올 수 있게 해주는 패키지
  • BeautifulSoup을 사용하기 위한 라이브러리 불러오기
# 라이브러리 불러오기

import requests
from bs4 import BeautifulSoup
  • BeautifulSoup 객체 생성
# 객체 생성하기

res = requests.get("원하는 사이트의 URL")

soup = BeautifulSoup(res.text, "html.parser")
  • <h3> 태그에 해당하는 요소 찾아보기
# <h3> 태그 요소 찾기

Ex_h3 = soup.find("h3")

# <h3> 태그 요소 모두 찾기

all_h3 = soup.find_all("h3")
# 그 중 첫번째 요소
all_h3[0]

id

  • 하나의 고유 태그를 가리키는 라벨
  • 요소 하나를 지칭하는 특별한 별명 (중복 불가!)
  • id를 사용하면 해당 태그 단 하나를 쉽게 가져올 수 있음
  • 사용법
# id 사용법

soup.find("div", id = "results")
# div 태그 내의 id가 results인 요소 찾기

class

  • 여러 태그를 묶는 라벨
  • 유사한 요소들을 구분짓는 별명
  • 사용법
# class가 "page-header"인 div 태그 찾기

find_result = soup.find("div", "page-header")

페이지네이션 (pagination) 사용하기

  • 많은 양의 정보를 인덱스로 구분하는 기법
import time

for i in range(1, 6):
    res = requests.get("URL")
    soup = BeautifulSoup(res.text, "html.parser")
    
    question = soup.find_all("li", "question-list-item").find("div", "question").find("div", "top").h4
    
    # for question in questions:
    #    print(question.find("div", "question").find("div", "top").h4)
    
    # 0.5초의 시간 간격 강제로 발생
    # 시간 간격이 없을 경우 페이지 로딩 전에 로직이 동작해 오류 발생 가능
    time.sleep(0.5)
728x90