본문 바로가기

Data Project/Mini Project1

네이버 금융 웹페이지 스크래핑 0202업종스크래핑-내용

https://finance.naver.com/sise/sise_group.naver?type=upjong 

지난번 네이버 금융 업종별 시세 페이지 목록 스크래핑에 이어 각 업종별 종목(내용)을 스크래핑 해보자.

2-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) 업종 목록 수집 파일 불러오기

https://yeonseon22.tistory.com/entry/%EB%84%A4%EC%9D%B4%EB%B2%84-%EA%B8%88%EC%9C%B5-%EC%9B%B9%ED%8E%98%EC%9D%B4%EC%A7%80-%EC%8A%A4%ED%81%AC%EB%9E%98%ED%95%91-0201%EC%97%85%EC%A2%85%EC%8A%A4%ED%81%AC%EB%9E%98%ED%95%91-%EB%AA%A9%EB%A1%9D

 

네이버 금융 웹페이지 스크래핑 0201업종스크래핑-목록

업종별 시세 페이지 스크래핑은 1) 목록 수집 2) 각 업종의 내용 수집, 두 단계로 진행한다. 이번 포스팅에서는 목록 수집만! 2-1. 업종별 시세 페이지 스크래핑-목록 우선 업종별 시세 페이지 스크

yeonseon22.tistory.com

이전 포스팅에서 저장한 업종 목록 파일을 불러온다.

# upjong-list 수집한 파일 읽어오기
df = pd.read_csv("naver-upjong-list.csv")
df

3) 함수 만들기를 위한 샘플 수집

첫 번째 행인 판매업체로 샘플 수집을 해보자.

link_no = 265
# url 설정
url = f"https://finance.naver.com/sise/sise_group_detail.naver?type=upjong&no={link_no}"
print(url)

# requests 요청
response = requests.get(url)

# table 불러오기, 전처리
table = pd.read_html(response.text)[2]
table = table.iloc[:,:-3]
table = table.dropna()
table = table.reset_index(drop=True)
table

4) 하나의 함수로 만들기

위 샘플 수집에 이용된 코드를 활용해서 하나의 함수로 만들어보자.

# 업종별 종목 table 수집 및 파일 저장 함수 만들기

def get_upjong_table(upjong_name, link_no):
    try:
        url = f"https://finance.naver.com/sise/sise_group_detail.naver?type=upjong&no={link_no}"
        response = requests.get(url)
        table = pd.read_html(response.text)[2]
        table = table.iloc[:,:-3]
        table = table.dropna()
        table = table.reset_index(drop=True)
        file_name = f"upjong-data/naver-upjong-contents-{upjong_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}")

파일 저장 코드 추가와 예외처리도 해주고, 과부하를 막기 위해 time.sleep도 넣어줬다.

5) 만든 함수와 반복문으로 각 업종별 종목 테이블 파일로 저장하기

# 반복문으로 업종별 종목 table 수집 및 파일로 저장하기

link_no = list(df["링크번호"])
upjong_name = list(df["업종명"])
name_no = 0

for i in link_no:
    get_upjong_table(upjong_name[name_no], i)
    name_no += 1

반복문으로 각 업종명과 링크번호를 파일명으로 하여 각 업종별 데이터 파일을 만든다.

총 79개 파일이 저장됨을 확인할 수 있다.

 

다음 포스팅 : 네이버 금융 테마별 시세 페이지 목록 스크래핑