https://finance.naver.com/sise/theme.naver
테마별 시세 : 네이버 증권
관심종목의 실시간 주가를 가장 빠르게 확인하는 곳
finance.naver.com
지난번 네이버 금융 테마별 시세 페이지 목록 스크래핑에 이어 각 테마별 종목(내용)을 스크래핑 해보자.
3-2. 테마별 시세 페이지 스크래핑-내용
1. 필요 라이브러리 로드
2. 테마 목록 수집 파일 불러오기
3. 함수 만들기를 위한 샘플 수집(수집할 페이지 URL 설정, requests 요청, table 정보 확인 + 간단한 전처리)
4. 하나의 함수로 만들기 (+ 경로 오류 해결)
5. 만든 함수와 반복문으로 각 테마별 종목 테이블 파일로 저장하기
1) 필요 라이브러리 로드
# 라이브러리 로드
import time
import pandas as pd
import numpy as np
import requests
from bs4 import BeautifulSoup as bs
안 써도 그냥 막 가져와 이젠..
2) 테마 목록 수집 파일 불러오기
지난 포스팅에서 만들어 둔 테마별 목록 수집 파일을 불러온다.
# theme-list 수집한 파일 읽어오기
df = pd.read_csv("naver-finance-theme-list.csv")
df.shape # (270, 9)
확인해보면
display(df)
3) 함수 만들기를 위한 샘플 수집(수집할 페이지 URL 설정, requests 요청, table 정보 확인 + 간단한 전처리)
첫번째 행인 2023 상반기 신규 성장으로 샘플 수집을 해보자.
link_no=522
# url 설정
url = f"https://finance.naver.com/sise/sise_group_detail.naver?type=theme&no={link_no}"
print(url)
# requests 요청
response = requests.get(url)
# table 불러오기
table = pd.read_html(response.text)[2]
# 토론실 빼고 불러오기
table = table.iloc[:,:-2]
# 결측치 제거
table = table.dropna()
# 인덱스 초기화
table = table.reset_index(drop=True)
table
url 설정, requests 요청, 간단한 전처리는 앞선 포스팅들에서도 다뤘기 때문에 자세한 설명은 생략.
이렇게 2023 상반기 신규 상장 종목들을 잘 가져오는 것을 확인할 수 있다.
4) 하나의 함수로 만들기 (+ 경로 오류 해결)
이제 위 샘플 과정을 함수로 만들어준다.
# 테마별 종목 table 수집 및 파일 저장 함수 만들기
def get_theme_table(theme_name, link_no):
''' 네이버 금융 테마별 종목 table 수집 함수
'''
try:
url = f"https://finance.naver.com/sise/sise_group_detail.naver?type=theme&no={link_no}"
response = requests.get(url)
table = pd.read_html(response.text)[2]
table = table.iloc[:,:-2]
table = table.dropna()
table = table.reset_index(drop=True)
file_name = f"theme-data/naver-theme-contents-{theme_name}-{link_no}.csv"
file = table.to_csv(file_name, index=False)
time.sleep(0.001)
return file
except Exception as e:
print(f"오류 링크 번호 : {link_no}, 오류 메시지 : {e}")
이때 file_name을 설정하는 데 있어 오류가 있었는데, 다음과 같다.
file_name = f"theme-data/naver-theme-contents-{theme_name}-{link_no}.csv"
이처럼 파일명을 설정할 때 파일 저장 경로도 설정할 수 있는데, "/"로 표시한다.
문제는 테마 이름 중에 "/"를 포함한 테마들이 있어 그대로 파일명을 설정하게 되면 파일 저장 경로 오류가 뜬다.
오류는 다음 과정에서 해결.
5) 만든 함수와 반복문으로 각 테마별 종목 테이블 파일로 저장하기
# 반복문으로 업종별 종목 table 수집 및 파일로 저장하기
link_no = list(df["링크번호"])
#경로 오류 해결 테마명 "/" 제거
name = list(df["테마명"])
theme_name = [a.replace("/", "-") for a in name]
name_no = 0
for i in link_no:
get_theme_table(theme_name[name_no], i)
name_no += 1
반복문으로 각 테마별 내용(종목)을 수집할 수 있다. 오류는 "/"를 "-"로 대체함으로써 해결했다.
# 파일 확인
pd.read_csv("theme-data/naver-theme-contents-코로나19(혈장치료-혈장치료제)-437.csv")
이렇게 스크래핑은 모두 종료!
근데 이 데이터로 뭘 분석하지? 항상 인사이트가 문제다 문제
'Data Project > Mini Project1' 카테고리의 다른 글
네이버 금융 웹페이지 스크래핑 0301테마스크래핑-목록 (0) | 2023.01.26 |
---|---|
네이버 금융 웹페이지 스크래핑 0202업종스크래핑-내용 (0) | 2023.01.24 |
네이버 금융 웹페이지 스크래핑 0201업종스크래핑-목록 (0) | 2023.01.21 |
네이버 금융 웹페이지 스크래핑 01시작하기 (0) | 2023.01.21 |