파이썬/파이썬-AI 기본

웹스크래핑, beatuifulsoup4

용사냥꾼69 2023. 4. 19. 16:55
728x90

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을 사용하면 웹 페이지에서 자동화된 테스트를 수행할 수도 있습니다.

 

이를 활용하면 효율적인 웹 애플리케이션 개발이 가능합니다.

 

특히나 데이터 수집 과정에서 인스타같은 홈페이지들은 동적 웹스크래핑으로만 수집이 가능한 경우도 있기 때문에 반드시 알아둬야 할 기술 중 하나라고 볼 수 있겠습니다.