본문 바로가기
개발/파이썬

웹크롤링_네이버증권 시가총액순 기업정보

by 권이사 2024. 6. 9.

1. 개요

  - 투자를 위한 기업의 기초정보 수집을 위해 네이버증권에서 코스피 시가총액순으로 정리된 기업정보 크롤링하기

 

 

2. 웹크로링 실행

(1) 라이브러리 설치

pip install requests
pip install bs4

* requests – 웹페이지에서 HTML 데이터 추출

* beautifulsoup – requests 로 수집한 HTML 데이터를 분석하고 구조화된 형태로 변환

(터미널 열고 requests, beautifulsoup 라이브러리 설치하기)

 

(2) 라이브러리 불러오기

import requests
from bs4 import BeautifulSoup
import csv

 

(3) 데이터 요청 및 추출

url = "https://finance.naver.com/sise/sise_market_sum.naver?&page="

for page in range(1, 5):
    res = requests.get(url + str(page))
    res.raise_for_status()
    soup = BeautifulSoup(res.text, "html.parser")

    data_rows = soup.find("table", attrs={"class":"type_2"}).find("tbody").find_all("tr")
    for row in data_rows:
        columns = row.find_all("td")
        if len(columns) <= 1:
            continue
        data = [column.get_text().strip() for column in columns]
        print(data)

(연속된 페이지를 불러와야 하므로 주소창(url) 그대로 복사하되, 페이지 숫자는 삭제)
(소스 입력 후 실행하면 네이버증권 시가총액 페이지내 기업정보를 긁어옴)

 

(4) CSV로 저장

filename = "시가총액.csv"
f = open(filename, "w", encoding="utf-8-sig", newline="")
writer = csv.writer(f)

title = "N	종목명	현재가	전일비	등락률	액면가	시가총액	상장주식수	외국인비율	거래량	PER	ROE".split("\t")
writer.writerow(title)


writer.writerow(data)

(네이버증권 페이지에서 표 상단의 제목라인을 드래그하여 그대로 title 태그에 붙여넣기)
(시가총액.csv 더블클릭하여 실행하여 확인)
(마우스 우클릭하여 탐색기에서 실행 → 엑셀파일로 열어 필요에 맞게 편집)

 

 

3. 종합

import requests
from bs4 import BeautifulSoup
import csv

url = "https://finance.naver.com/sise/sise_market_sum.naver?&page="


filename = "시가총액.csv"
f = open(filename, "w", encoding="utf-8-sig", newline="")
writer = csv.writer(f)

title = "N	종목명	현재가	전일비	등락률	액면가	시가총액	상장주식수	외국인비율	거래량	PER	ROE".split("\t")
writer.writerow(title)


for page in range(1, 5):
    res = requests.get(url + str(page))
    res.raise_for_status()
    soup = BeautifulSoup(res.text, "html.parser")

    data_rows = soup.find("table", attrs={"class":"type_2"}).find("tbody").find_all("tr")
    for row in data_rows:
        columns = row.find_all("td")
        if len(columns) <= 1:
            continue
        data = [column.get_text().strip() for column in columns]
        writer.writerow(data)

 

 

* 참고 강의 – 유튜브<나도코딩> → 파이썬 코딩 무료 강의 (활용편3) – 웹크롤링