웹 크롤링은 인터넷에서 웹 페이지의 데이터를 자동으로 수집하는 기술이다. 파이썬에서는 Beautiful Soup와 Requests 라이브러리를 사용하여 웹 크롤링을 수행할 수 있다. 이러한 라이브러리를 사용하여 HTML 문서에서 필요한 데이터를 추출하는 방법을 살펴보자.
웹 크롤링을 위해 requests
와 beautifulsoup4
라이브러리를 설치한다.
pip install requests beautifulsoup4
Requests 라이브러리를 사용하여 웹 페이지의 HTML 내용을 가져온다.
import requests
url = "http://example.com"
response = requests.get(url)
# 응답 코드 확인
print(response.status_code) # 200이면 성공적으로 페이지를 가져온 것
Beautiful Soup을 사용하여 HTML 문서를 파싱하고 데이터를 추출한다.
from bs4 import BeautifulSoup
# BeautifulSoup 객체 생성
soup = BeautifulSoup(response.text, 'html.parser')
# 원하는 데이터 추출
# 예: 모든 h1 태그 찾기
for h1 in soup.find_all('h1'):
print(h1.text)
# 예: 특정 웹사이트에서 뉴스 제목 가져오기
news_url = "http://example-news-website.com"
news_response = requests.get(news_url)
news_soup = BeautifulSoup(news_response.text, 'html.parser')
for news_headline in news_soup.find_all('h2'):
print(news_headline.text.strip())
특정 태그를 찾아 그 안의 텍스트만을 추출한다.
# 예를 들어, 모든 <p> 태그의 텍스트 추출
paragraphs = soup.find_all('p')
for p in paragraphs:
print(p.get_text())
웹 브라우저의 개발자 도구를 사용하여 특정 태그를 식별하고, 해당 태그 내의 데이터를 추출한다.
# 예: 웹사이트에서 명언이 있는 태그 찾기
quote_tags = soup.find_all('div', class_='quote')
for quote in quote_tags:
print(quote.get_text().strip())
이번에는 웹 크롤링을 사용하여 날씨 정보를 추출해보겠다. 일반적으로 날씨 정보를 제공하는 웹사이트는 복잡한 HTML 구조를 가지고 있으므로, 정확한 데이터를 추출하기 위해서는 웹 페이지의 구조를 잘 이해해야 한다.
아래의 코드는 특정 날씨 웹사이트에서 도시의 현재 날씨를 추출하는 예제이다.
import requests
from bs4 import BeautifulSoup
URL = "https://weather.example.com/city"
page = requests.get(URL)
soup = BeautifulSoup(page.content, 'html.parser')
# 도시 이름과 현재 온도 찾기
city = soup.find('div', class_='city-name').get_text()
temperature = soup.find('span', class_='current-temp').get_text()
print(f"도시: {city}")
print(f"현재 온도: {temperature}")
위 코드는 특정 웹사이트의 구조에 맞춰져 있으므로, 다른 웹사이트를 크롤링할 때는 해당 사이트의 HTML 구조에 맞게 find
또는 find_all
메소드를 사용하여 적절한 태그와 클래스를 찾아야 한다.