# 네이버 제공 코스피 정보를 읽어 csv 파일로 저장
import csv
import requests
from bs4 import BeautifulSoup
url = "https://finance.naver.com/sise/sise_market_sum.naver?&page={}"
fname = "네이버_코스피.csv"
# fObj = open(fname, mode = 'w', encoding = 'UTF-8', newline = '') # 공백 행 제외
fObj = open(fname, mode = 'w', encoding = 'UTF-8-sig', newline = '') # 엑셀에서 읽을 때 한글 깨짐
writer = csv.writer(fObj)
title = "N 종목명 현재가 전일비 등락률 액면가 시가총액 상장주식수 외국인비율 거래량 PER ROE".split()
print(title)
writer.writerow(title)
for page in range(1, 3):
res = requests.get(url.format(str(page)))
# print(res)
res.raise_for_status() # 읽기 실패하면 작업 중지
soup = BeautifulSoup(res.text, 'html.parser')
print(soup)
datas = soup.find("table", attrs = {"class":"type_2"}).find("tbody").find_all("tr")
# print(datas)
for row in datas:
cols = row.findAll("td")
if len(cols) <= 1:continue # [''] 해결
data = [col.get_text().strip() for col in cols] # strip() : '\n\n\t\t\t\t150\n\t\t\t\t\n' 제거
# print(data)
writer.writerow(data) # 만든 파일에 넣기
fObj.close()
# csv 읽기
import pandas as pd
import numpy as np
df = pd.read_csv(fname)
print(df.head(5))
<console>
['N', '종목명', '현재가', '전일비', '등락률', '액면가', '시가총액', '상장주식수', '외국인비율', '거래량', 'PER', 'ROE']
N 종목명 현재가 전일비 ... 외국인비율 거래량 PER ROE
1 삼성전자 60,000 600 +1.01% ... 17,022,187 9.10 13.92 NaN
2 LG에너지솔루션 563,000 35,000 +6.63% ... 511,514 935.22 10.68 NaN
3 삼성바이오로직스 882,000 5,000 +0.57% ... 48,261 117.30 8.21 NaN
4 SK하이닉스 83,900 1,200 +1.45% ... 3,708,458 5.32 16.84 NaN
5 삼성SDI 760,000 23,000 +3.12% ... 406,071 35.45 8.45 NaN
[5 rows x 12 columns]