네이버 금융 홈페이지에서 종목 뉴스 스크래핑하기(크롬에서 가능)
1. 데이터 수집하기
- 네이버 금융 홈페이지에서 원하는 종목을 검색하여 들어갑니다.
- 개발자 도구(f12)에 들어가 Network 탭에서 종목뉴스에 관한 URL을 찾아줍니다.
- 필요한 라이브러리를 불러오고 pd.read_html()을 사용하여 url 안에 내용을 불러옵니다.
import pandas as pd
import numpy as np
item_name = '삼성전자'
item_code = '005930'
page_no = 1
url = f'https://finance.naver.com/item/news_news.naver?code={item_code}&page={page_no}&sm=title_entity_id.basic&clusterId='
df = pd.read_html(url)
df
- dataframe 형태로 만들어줍니다.
table = df[0] # df가 리스트 형태로 되어있고 내가 필요한 내용은 0번 인덱스이므로 table변수에 인덱싱해준다.
table
- for문을 사용하여 10페이지까지 내용을 스크래핑 해봅니다.
item_name = '삼성전자'
item_code = '005930'
page_no = 1
temp_list = []
for page_no in range(1,11):
url = f'https://finance.naver.com/item/news_news.naver?code={item_code}&page={page_no}&sm=title_entity_id.basic&clusterId='
df = pd.read_html(url)
table = df[0]
temp_list.append(table)
2. 데이터 전처리
- 스크래핑 한 내용을 pd.concat()을 활용하여 하나의 dataframe으로 만들어줍니다.
news = pd.concat(temp_list)
news
- 내용을 보면 정보제공과 날짜 컬럼에 쓸모없는 내용이 있는 걸 확인할 수 있는데 이를 삭제해 줍니다.
news = news[~news['정보제공'].str.contains('연관기사')] # .str.contains 를 사용하며 조건의 반대에는 앞에 ~ 표시로 표현할 수 있습니다.
news
- 중간에 빠진 행때문에 중간중간이 빠진 인덱스를 다시 만들어줍니다.
news = news.reset_index(drop=True) # drop=True는 기존에 있던 인덱스를 삭제해줍니다
news
3. 파일로 저장하기
- 정리한 뉴스를 파일로 저장해줍니다.
date = news['날짜'].iloc[0][0:10]
file_name = f'{item_name}:{item_code}_{date}.csv' # 마지막에 .csv를 넣어줘야 깔끔하게 정리돼서 저장됌
news.to_csv(file_name, index=False)
#pd.read_csv(file_name) # 파일을 읽어오는 코드
4. 함수로 만들기
- 하나의 함수로 만들어 대한항공의 종목뉴스를 가져와봤습니다.
[코드라이언] AI SCHOOL에서 배운 내용을 토대로 실습을 한 내용입니다.
'Python' 카테고리의 다른 글
[Python] Streamlit과 Github 실습 (1) | 2022.10.19 |
---|---|
[Pandas] 데이터 수집 - 웹스크래핑(Json) (0) | 2022.09.30 |
[Seaborn] Distribution Plots (0) | 2022.09.27 |
[Seaborn] Relational Plots (0) | 2022.09.27 |
[Seaborn] 들어가기 (0) | 2022.09.26 |