본문 바로가기

카테고리 없음

python 웹 스크래핑 뉴스 기사 본문, 단어 빈도수 체크

뉴스에서 웹스크래핑 연습하기

상황: 뉴스 검색을 통해 기사 본문 텍스트와, 관련 단어 빈도수 체크

1) 라이브러리 설치

pip install requests

requests · PyPI

 

requests

Python HTTP for Humans.

pypi.org

 

pip install beautifulsoup4

beautifulsoup4 · PyPI

 

beautifulsoup4

Screen-scraping library

pypi.org

import requests
from bs4 import BeautifulSoup
from collections import Counter
import re

2) Naver 뉴스 검색 URL과 키워드 설정

base_url = 'https://search.naver.com/search.naver?where=news&sm=tab_jum&query='
keyword = 'gpt'

3) requests를 사용하여 HTML 페이지 가져오기

response = requests.get(base_url+keyword)
html = response.content

4) BeautifulSoup를 사용하여 HTML 페이지 파싱

soup = BeautifulSoup(html, 'html.parser')

5) 기사 본문 텍스트 가져오기

article_texts = []
for info in soup.select('.bx .news_area .news_dsc .dsc_wrap'):
    sele_a = info.select("a")
    for a in sele_a:
        article_url = a['href']
        article_text = a.text
        article_texts.append(article_text)

6) 기사 본문에서 gpt관련 단어 빈도수 파악하기

gpt_words = ['GPT', 'GPT-5', 'GPT4', 'Generative Pre-trained Transformer']
gpt_word_counts = Counter()
for article_text in article_texts:
    for gpt_word in gpt_words:
        gpt_word_counts[gpt_word] += len(re.findall(gpt_word, article_text))

7) 결과 출력

print('GPT 관련 단어 빈도수:', gpt_word_counts)

8) 전체코드

import requests
from bs4 import BeautifulSoup
from collections import Counter
import re

# Naver 뉴스 검색 URL과 키워드 설정
base_url = 'https://search.naver.com/search.naver?where=news&sm=tab_jum&query='
keyword = 'gpt'

# requests를 사용하여 HTML 페이지 가져오기
response = requests.get(base_url+keyword)
html = response.content

# BeautifulSoup를 사용하여 HTML 페이지 파싱
soup = BeautifulSoup(html, 'html.parser')

# 기사 본문 텍스트 가져오기
article_texts = []
for info in soup.select('.bx .news_area .news_dsc .dsc_wrap'):
    sele_a = info.select("a")
    for a in sele_a:
        article_url = a['href']
        article_text = a.text
        article_texts.append(article_text)

# 기사 본문에서 GPT 관련 단어 빈도수 파악하기
gpt_words = ['GPT', 'GPT-4', 'GPT4', 'Generative Pre-trained Transformer']
gpt_word_counts = Counter()
for article_text in article_texts:
    for gpt_word in gpt_words:
        gpt_word_counts[gpt_word] += len(re.findall(gpt_word, article_text))

# 결과 출력
print('GPT 관련 단어 빈도수:', gpt_word_counts)

뉴스 웹 스크래핑은 다양한 분야에서 활용될 수 있습니다.

일부 예시는 다음과 같습니다:
경제 분석: 뉴스 웹 사이트에서 경제 관련 기사를 스크랩하여 경제 동향을 분석하고 예측하는 데 사용할 수 있습니다.
인사이트 및 트렌드 분석: 스크래핑된 뉴스 데이터에서 키워드와 주요 주제를 추출하여 인사이트 및 트렌드를 파악할 수 있습니다.
매체 모니터링: 스크래핑된 뉴스 데이터를 사용하여 회사나 브랜드에 대한 언급 및 평판을 모니터링 할 수 있습니다.
뉴스 요약 및 분류: 스크래핑된 뉴스 데이터에서 텍스트 요약 기술을 사용하여 뉴스 기사를 간결하게 요약하거나 분류할 수 있습니다.
자동화된 뉴스 보고서 작성: 스크래핑된 뉴스 데이터와 자연어처리 기술을 활용하여 자동화된 뉴스 보고서를 작성할 수 있습니다.
금융 거래 예측: 뉴스 웹 사이트에서 수집한 정보를 기반으로 금융 거래를 예측할 수 있습니다.
범죄 예방 및 경찰 업무: 스크래핑된 뉴스 데이터를 사용하여 범죄 예방 및 경찰 업무를 보조할 수 있습니다.

이외에도 뉴스 웹 스크래핑은 다양한 분야에서 활용될 수 있으며, 이를 활용하는 방법은 계속해서 발전하고 있습니다.