웹스크래핑, beatuifulsoup4
HTML을 분석해주는 BeautifulSoup
BeautifulSoup은 Python 라이브러리로 HTML 및 XML 문서를 분석하는 데 사용됩니다. 이를 사용하면 웹 스크래핑과 데이터 마이닝 작업을 보다 쉽게 수행할 수 있습니다.
아래는 BeautifulSoup을 사용하여 웹 페이지에서 제목 요소를 추출하는 간단한 예제 코드입니다.
pythonCopy code
import requests
from bs4 import BeautifulSoup # 웹 페이지 가져오기
url = 'https://www.example.com/' response = requests.get(url) # HTML 파싱
soup = BeautifulSoup(response.text, 'html.parser') # 제목 요소 가져오기
title = soup.title
원하는 요소 가져오기 I
웹 페이지에서 필요한 정보를 가져오는 작업은 종종 HTML 문서에서 특정 요소를 찾아야 합니다. BeautifulSoup을 사용하면 이를 쉽게 수행할 수 있습니다.
아래는 BeautifulSoup을 사용하여 웹 페이지에서 특정 클래스를 가진 요소를 추출하는 예제 코드입니다.
import requests from bs4 import BeautifulSoup # 웹 페이지 가져오기
url = 'https://www.example.com/' response = requests.get(url) # HTML 파싱
soup = BeautifulSoup(response.text, 'html.parser') # 클래스가 "example"인 요소 가져오기
elements = soup.find_all(class_='example') # 요소 출력
for element in elements: print(element)
HTML의 Locator로 원하는 요소 찾기
웹 페이지에서 특정 요소를 찾을 때 CSS 선택자 또는 XPath를 사용할 수 있습니다. BeautifulSoup은 이 두 가지 방법을 모두 지원합니다.
아래는 CSS 선택자를 사용하여 웹 페이지에서 특정 요소를 추출하는 예제 코드입니다.
import requests from bs4 import BeautifulSoup # 웹 페이지 가져오기
url = 'https://www.example.com/' response = requests.get(url) # HTML 파싱
soup = BeautifulSoup(response.text, 'html.parser') # CSS 선택자로 요소 가져오기
element = soup.select_one('div.example') # 요소 출력
print(element)
원하는 요소 가져오기 II
웹 페이지에서 여러 요소를 가져와야 하는 경우, BeautifulSoup의 find_all() 메서드를 사용할 수 있습니다.
아래는 find_all() 메서드를 사용하여 웹 페이지에서 모든 링크 요소를 추출하는 예제 코드입니다.
import requests from bs4 import BeautifulSoup # 웹 페이지 가져오기
url = 'https://www.example.com/'
response = requests.get(url) # HTML 파싱
soup = BeautifulSoup(response.text, 'html.parser') # 모든 링크 요소 가져오기
links = soup.find_all('a') # 링크 출력
for link in links:
print(link.get('href'))
동적 웹 페이지와의 만남
동적 웹 페이지는 웹 페이지가 로드된 후 JavaScript를 사용하여 동적으로 변경되는 웹 페이지에서 데이터를 추출하려면, 정적인 HTML과는 달리 웹 페이지가 로드된 후 JavaScript 코드가 실행되어야 합니다. 이를 위해 Python에서는 Selenium이라는 라이브러리를 사용할 수 있습니다.
아래는 Selenium을 사용하여 동적 웹 페이지에서 특정 요소를 추출하는 예제 코드입니다.
from selenium import webdriver
from selenium.webdriver.common.by import By
# 웹 드라이버 실행
driver = webdriver.Chrome('/path/to/chromedriver')
driver.get('https://www.example.com/')
# 원하는 요소 찾기
element = driver.find_element(By.ID, 'example')
# 요소 출력
print(element.text)
# 웹 드라이버 종료
driver.quit()
이 코드는 Chrome 웹 드라이버를 사용하여 https://www.example.com/ 웹 페이지를 열고, ID가 "example"인 요소를 찾아서 출력합니다. 마지막으로 웹 드라이버를 종료합니다.
Selenium을 사용하면 웹 페이지에서 자동화된 테스트를 수행할 수도 있습니다.
이를 활용하면 효율적인 웹 애플리케이션 개발이 가능합니다.
특히나 데이터 수집 과정에서 인스타같은 홈페이지들은 동적 웹스크래핑으로만 수집이 가능한 경우도 있기 때문에 반드시 알아둬야 할 기술 중 하나라고 볼 수 있겠습니다.