import pandas as pd
import requests
from bs4 import BeautifulSoup
def get_stock_list(market_type, max_pages=10):
stocks = []
for page in range(1, max_pages + 1):
url = f"https://finance.naver.com/sise/sise_market_sum.nhn?sosok={market_type}&page={page}"
response = requests.get(url)
soup = BeautifulSoup(response.text, "html.parser")
# 종목 코드와 이름 찾기
for link in soup.select("a.tltle"):
name = link.get_text(strip=True) # 종목명
code = link["href"].split("=")[-1] # 종목코드
stocks.append((name, code)) # (종목명, 종목코드) 순서로 저장
return stocks
# 코스피(0), 코스닥(1) 종목 가져오기
kospi_stocks = get_stock_list(0, max_pages=30) # 코스피 최대 30페이지
kosdaq_stocks = get_stock_list(1, max_pages=30) # 코스닥 최대 30페이지
# 데이터프레임 생성 (컬럼 순서: 종목명, 종목코드)
df = pd.DataFrame(kospi_stocks + kosdaq_stocks, columns=["종목명", "종목코드"])
# 엑셀 저장 경로 설정
save_path = r"C:\Users\PC\Desktop\stock_codes.xlsx"
# 추가할 시트 목록 영문은 대문자를 이용
extra_sheets = ["요약", "DB하이텍", "실리콘투", "피엔티", "티앤엘", "아이패밀리에스씨", "LX세미콘",
"비올", "브이티", "바이오플러스", "휴메딕스", "에이피알", "삼양식품", "코스맥스",
"파마리서치", "HD현대마린솔루션", "hpsp"]
# 엑셀 저장 (여러 시트 추가)
with pd.ExcelWriter(save_path, engine="openpyxl") as writer:
# 종목 코드 시트 저장
df.to_excel(writer, sheet_name="codes", index=False)
# 추가 시트 생성 (현재는 빈 데이터프레임)
empty_df = pd.DataFrame()
for sheet in extra_sheets:
empty_df.to_excel(writer, sheet_name=sheet, index=False)
print(f"저장 완료: {save_path}")