특정 키워드 네이버 뉴스 크롤링 - BeautifulSoup
들어가며
비트코인 자동 매매 프로그램을 만들기 전에 '비트코인'에 대한 뉴스를 크롤링해서 텍스트 분석을 먼저 진행하기로 했습니다. 우선, '비트코인'을 키워드로 네이버 뉴스 제목을 추출하는 방법을 소개합니다.
- 키워드, URL 설정
- 웹 페이지 요청
- 뉴스 제목 데이터프레임 생성
키워드, URL 설정
먼저 필요한 패키지인 requests와BeautifulSoup를 import합니다.
import requests
from bs4 import BeautifulSoup
검색할 키워드는 '비트코인'으로 설정했습니다. 네이버 뉴스 url은 형식이 잘 갖춰져있어 크롤링하기 매우 편리합니다.
keyword = '비트코인'
url = f'https://search.naver.com/search.naver?where=news&query={keyword}'
위에서 설정한 url인 'https://search.naver.com/search.naver?where=news&query=비트코인'을 검색 창에 그대로 입력하면, 아래 이미지와 같이 '비트코인'에 대한 뉴를 확인할 수 있습니다.
웹 페이지 요청
위의 url로 웹 페이지에 요청을 보내서 응답을 response에 저장합니다. requests.get()은 웹 페이지에 접속하여 해당 페이지의 HTML 코드 전체를 가져오는 코드입니다.
# 웹 페이지 접속
response = requests.get(url)
이제 위에서 가져온 HTML 코드(response.text)를 파싱할 수 있도록 BeautifulSoup를 활용합니다. 간단하게, 위의 response는 웹 페이지를 접속하는 부분이고, soup는 웹 페이지를 편리하게 파싱할 수 있도록 도와주는 도구라고 할 수 있습니다.
# HTML 파싱
soup = BeautifulSoup(response.text, 'html.parser')
이 글의 최종 목표는 네이버 뉴스 제목을 크롤링하는 것이므로 불러온 HTML 코드에서 뉴스 제목이 포함된 부분만 articles에 저장하겠습니다. aricles를 확인해보면 아래 이미지와 같이 news_tit에 해당하는 부분만 불러온 것을 확인할 수 있습니다.
articles = soup.select('.news_tit')
articles
aritcles 중 하나에 대해 뉴스 제목 텍스트를 추출하면 다음과 같습니다.
article = articles[0]
title = article.text
title
뉴스 제목 데이터프레임 생성
articles를 활용하여 뉴스 제목을 데이터프레임으로 정리하겠습니다.
import pandas as pd
title_tot = pd.DataFrame([article.text for article in articles], columns=['title'])
title_tot.head()
이 글에서는 네이버 뉴스 제목을 파이썬을 활용하여 크롤링하는 방법을 소개했습니다. 추출한 뉴스 제목을 감정 분석을 통해 비트코인 자동 매매 프로그램에 활용할 예정입니다.
전체 코드
import requests
from bs4 import BeautifulSoup
import pandas as pd
# 키워드, URL
keyword = '비트코인'
url = f'https://search.naver.com/search.naver?where=news&query={keyword}'
# 웹 페이지 요청
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
# news_tit 부분 필터링
articles = soup.select('.news_tit')
articles
# 뉴스 제목 확인
article = articles[0]
title = article.text
title
# 뉴스 제목 데이터프레임 생성
title_tot = pd.DataFrame([article.text for article in articles], columns=['title'])
title_tot.head()
'Python' 카테고리의 다른 글
[파이썬] Daum 뉴스 기사 제목, 본문 크롤링 - BeautifulSoup (0) | 2025.04.01 |
---|---|
[파이썬] 특정 폴더 안의 확장자별 파일 리스트 생성 - os.listdir() (2) | 2025.03.28 |
[파이썬] 데이터 건수, 평균, 최대/최소값 집계 - pandas groupby (3) | 2025.03.27 |
[파이썬] 대용량 csv 파일 부분 조회 - pandas, read_csv, nrows, chunksize (0) | 2025.03.25 |
[파이썬] 엑셀 통합파일 시트명 리스트 생성 - pandas, ExcelFile (3) | 2025.03.23 |