포털 사이트에서 기사를 크롤링하는 것은 웹 데이터 수집에서 매우 유용한 기술이다. 이를 위해 Python의 Beautiful Soup과 Requests 라이브러리를 사용할 수 있다. 다음은 웹 크롤링의 기본 단계와 이를 통해 기사 제목, 하이퍼링크, 본문 등을 추출하는 방법에 대한 설명이다.
먼저, 필요한 라이브러리를 설치하고, 대상 웹페이지에 요청을 보낸다.
import requests
from bs4 import BeautifulSoup
url = "http://example.com/news"
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
특정 구역(예: 머리 기사)의 제목을 추출한다.
headlines = soup.find_all('h1', class_='headline')
for headline in headlines:
print(headline.get_text())
기사 제목과 연결된 하이퍼링크 주소를 추출한다.
for headline in headlines:
link = headline.find('a')['href']
print(link)
특정 섹션(예: 메인 뉴스 영역)의 모든 하이퍼링크를 추출한다.
news_section = soup.find('div', class_='news_section')
links = news_section.find_all('a')
for link in links:
print(link['href'])
각 기사의 제목과 그에 연결된 본문을 추출한다.
for headline in headlines:
title = headline.get_text()
link = headline.find('a')['href']
article_response = requests.get(link)
article_soup = BeautifulSoup(article_response.text, 'html.parser')
content = article_soup.find('div', class_='content').get_text()
print(title, content)
링크된 모든 기사의 제목과 본문을 순회하며 추출한다.
for link in links:
article_url = link['href']
article_response = requests.get(article_url)
article_soup = BeautifulSoup(article_response.text, 'html.parser')
title = article_soup.find('h1').get_text()
content = article_soup.find('div', class_='content').get_text()
print(title, content)
위 코드는 예시로, 실제 포털 사이트의 HTML 구조에 따라 클래스 이름과 태그는 달라질 수 있다. 또한, 대량의 웹 크롤링을 할 때는 사이트의 접근 정책을 확인하고, 서버에 과부하를 주지 않도록 주의해야 한다.