가이드라인

BeautifulSoup 웹 크롤링의 한계

requestsBeautifulSoup 라이브러리는 변하지 않는 웹사이트, 즉 정적인 데이터를 크롤링하는 데에 사용됩니다.

하지만 최신 웹사이트들은 사용자와의 상호작용에 따라 데이터를 동적으로 처리합니다. 사용자는 서버에 추가적인 데이터를 요청하고, 서버로부터 받은 응답값을 웹 브라우저의 JavaScript가 처리하여 화면에 이를 표시합니다.

requests 라이브러리는 정적 HTML만을 가져올 수 있고, BeautifulSoup은 가져온 HTML을 파싱하는 데에 사용됩니다.

JavaScript가 생성하거나 변경하는 데이터는 requests로 가져올 수 있는 HTML에 포함되어 있지 않기 때문에, 기존 방식으로는 JavaScript로 처리한 데이터를 크롤링할 수 없습니다.


동적 데이터를 크롤링하는 방법?

하지만 Selenium를 사용하면 실제로 웹 브라우저를 실행시키고, JavaScript가 실행된 후의 DOM을 크롤링할 수 있습니다.

기상청 홈페이지는 JavaScript를 활용해 동적으로 날씨 정보를 표시하기 때문에 BeautifulSoup으로는 데이터를 제대로 가져올 수 없습니다.

하지만 Selenium을 사용하면 실제 브라우저에서 JavaScript가 실행된 후의 화면을 가져와, 이러한 문제를 해결할 수 있습니다.

참고 : 실습 코드를 컴퓨터에서 실제로 실행하려면, pip install selenium 명령어로 Selenium 라이브러리를 설치해야 합니다.

Selenium을 사용한 동적 웹 크롤링
from selenium import webdriver from selenium.webdriver.common.by import By # Chrome 브라우저 열기 driver = webdriver.Chrome() # 기상청 동네 예보 페이지 열기 url = "https://www.weather.go.kr/w/index.do" driver.get(url) # 기온과 체감온도 찾기 # 'tmp' 클래스는 현재 기온을 나타내고, 'chill' 클래스는 체감온도를 나타냄 temperature_element = driver.find_element(By.CLASS_NAME, 'tmp') feels_like_element = driver.find_element(By.CLASS_NAME, 'chill') # 텍스트 추출 temperature = temperature_element.text feels_like = feels_like_element.text # 결과 출력 print(f"오늘의 기온: {temperature}") print(f"체감온도: {feels_like}") # WebDriver 종료 driver.quit()

코드 상세 설명

  • driver = webdriver.Chrome() : Chrome 브라우저를 열고, driver 객체 생성

  • driver.get(url) : 지정한 URL(기상청 홈페이지)로 이동

  • temperature_element = driver.find_element(By.CLASS_NAME, 'tmp') : tmp 클래스를 가진 요소를 찾아 temperature_element에 저장

  • feels_like_element = driver.find_element(By.CLASS_NAME, 'chill') : chill 클래스를 가진 요소를 찾아 feels_like_element에 저장

  • temperature = temperature_element.text : temperature_element의 텍스트를 추출하여 temperature에 저장

  • feels_like = feels_like_element.text : feels_like_element의 텍스트를 추출하여 feels_like에 저장

  • driver.quit() : WebDriver 종료


출력 결과 예시
오늘의 기온: 30.4℃ 체감온도: 체감(30.6℃)

이렇게 Selenium을 사용하면 JavaScript로 동적으로 생성된 콘텐츠를 크롤링할 수 있습니다.

Selenium 라이브러리에 대한 더 자세한 내용은 파이썬과 AI로 끝내는 업무 자동화 커리큘럼에서 배우실 수 있습니다!

가이드라인

AI 튜터

배포

디자인

업로드

수업 노트

즐겨찾기

도움말

코드 에디터

코드 실행
코드 생성

실행 결과