웹 크롤링

Plcb Archive·2024년 2월 6일
0

파이썬

목록 보기
20/22

웹 크롤링 기초

웹 크롤링은 인터넷에서 웹 페이지의 데이터를 자동으로 수집하는 기술이다. 파이썬에서는 Beautiful Soup와 Requests 라이브러리를 사용하여 웹 크롤링을 수행할 수 있다. 이러한 라이브러리를 사용하여 HTML 문서에서 필요한 데이터를 추출하는 방법을 살펴보자.

1. 필요한 라이브러리 설치하기

웹 크롤링을 위해 requestsbeautifulsoup4 라이브러리를 설치한다.

pip install requests beautifulsoup4

2. 웹 페이지 가져오기

Requests 라이브러리를 사용하여 웹 페이지의 HTML 내용을 가져온다.

import requests

url = "http://example.com"
response = requests.get(url)

# 응답 코드 확인
print(response.status_code)  # 200이면 성공적으로 페이지를 가져온 것

3. 웹 페이지 파싱하기

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)

4. 실제 사례 적용하기

웹 사이트에서 특정 정보를 추출하기

# 예: 특정 웹사이트에서 뉴스 제목 가져오기
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 메소드를 사용하여 적절한 태그와 클래스를 찾아야 한다.

0개의 댓글