아래는 네이버 금융의 시가총액 순위 1위부터 500위까지 데이터를 가져와 엑셀로 저장하는 Python 코드입니다.
requests를 사용하여 네이버 금융 페이지의 HTML을 가져옵니다.pandas.read_html()을 이용해 테이블을 추출합니다.market_cap_500.xlsx)로 저장합니다.import pandas as pd
import requests
from time import sleep
# 저장할 엑셀 파일명
excel_filename = "market_cap_500.xlsx"
# 네이버 금융 시가총액 페이지 URL (코스피 기준, sosok=0)
base_url = "https://finance.naver.com/sise/sise_market_sum.naver?sosok=0&page="
# HTTP 요청 헤더 (User-Agent 설정)
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"
}
# 데이터 저장 리스트
all_data = []
# 1페이지부터 10페이지까지 크롤링 (1~500위)
for page in range(1, 11):
url = base_url + str(page)
response = requests.get(url, headers=headers)
if response.status_code != 200:
print(f"페이지 {page} 가져오기 실패!")
continue
# HTML 테이블에서 데이터 추출
tables = pd.read_html(response.text)
if tables:
df = tables[1] # 두 번째 테이블이 시가총액 데이터
df = df.dropna(how="all") # 빈 행 제거
all_data.append(df)
print(f"페이지 {page} 크롤링 완료...")
sleep(1) # 서버 부하 방지를 위해 1초 대기
# 모든 페이지 데이터 합치기
final_df = pd.concat(all_data, ignore_index=True)
# 엑셀 파일로 저장
final_df.to_excel(excel_filename, index=False)
print(f"✅ 시가총액 1~500위 데이터가 '{excel_filename}' 파일로 저장되었습니다!") 네이버 금융 시가총액 페이지에서 1~10페이지(총 500개) 크롤링.
requests.get()에서 User-Agent 설정을 추가해 네이버 차단을 방지.pd.read_html()로 HTML 테이블을 추출, 필요 없는 빈 행 제거.sleep(1)을 사용해 서버 부하 방지.pandas.concat()으로 합쳐 엑셀 파일(market_cap_500.xlsx)로 저장.market_cap_500.xlsx 파일이 생성되며, 엑셀에서 시가총액 1위~500위 기업 리스트를 확인할 수 있습니다.
실제 데이터가 생성되었고 엑셀파일로 저장되었음을 확인할 수 있습니다.
중간에 헤더에 User-Agent는 왜 설정해둔걸까요?
User-Agent 설정 이유User-Agent는 브라우저 또는 요청을 보내는 클라이언트의 정보를 서버에 전달하는 HTTP 헤더입니다. 이 설정을 하는 이유는 다음과 같습니다.
네이버 금융(finance.naver.com)은 특정 요청이 봇(Bot) 또는 자동화 프로그램에서 왔다고 판단하면 403 Forbidden (접근 차단) 응답을 보낼 수 있습니다.
이를 방지하기 위해 일반 웹 브라우저에서 접근하는 것처럼 보이도록 User-Agent 값을 설정합니다.
requests 기본 User-Agent 차단 가능성Python의 requests 라이브러리를 사용하면 기본적으로 아래와 같은 User-Agent를 사용합니다.
python-requests/2.25.1 이 값은 웹사이트에서 자동화된 봇 요청으로 인식될 가능성이 큽니다.
따라서, Chrome 브라우저의 User-Agent 값을 사용하여 사람이 접속한 것처럼 속이는 것이 중요합니다.
User-Agent 없이도 동작할까?✔️ 네이버 금융의 크롤링 정책은 변경될 수 있으므로, 일부 경우에는 동작할 수도 있고, 일부 경우에는 차단될 수도 있습니다.
✔️ 만약 User-Agent 없이 실행했을 때 정상적으로 동작하면 굳이 추가할 필요는 없습니다. 하지만 장기적으로 안정성을 확보하려면 User-Agent를 설정하는 것이 좋습니다.
아래 두 가지 코드로 비교해보세요.
User-Agent 없이 실행import requests
url = "https://finance.naver.com/sise/sise_market_sum.naver?sosok=0&page=1"
response = requests.get(url)
print(response.status_code) # 정상적으로 작동하면 200, 차단되면 403 또는 다른 코드가 나옴
print(response.text[:500]) # 응답 HTML 일부 확인 User-Agent 추가 후 실행import requests
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"
}
response = requests.get(url, headers=headers)
print(response.status_code)
print(response.text[:500]) User-Agent 없이도 동작할 수도 있지만, 차단될 가능성이 있으므로 설정하는 것이 권장됨.User-Agent를 추가하는 것이 좋음.403 Forbidden 오류가 발생하면, User-Agent를 설정한 후 다시 시도하면 정상적으로 동작할 가능성이 큼.🚀 따라서 User-Agent 설정을 추가하는 것이 가장 안전한 방법입니다.
코스피 8% 폭락, 서킷브레이커 발동, SK텔레콤 Claude AI 차단까지. 한국의 AI 레버리지 버블이 단 하루…
SNS 사진 1장으로 30초 만에 딥페이크 영상이 완성됩니다. 당신의 얼굴이 이미 범죄에 악용되고 있을 수…
SNS 사진 1장으로 30초 만에 딥페이크 영상이 완성됩니다. 당신의 얼굴이 이미 범죄에 악용되고 있을 수…
달러/원 환율이 급등하는 이유와 실생활 영향을 정리했습니다. 지금 당장 활용할 수 있는 환전·투자 대응 전략까지…
미래에셋·미래에셋벤처투자·미래에셋생명이 동반 급등한 이유는 스페이스X 상장 기대감입니다. 세 회사가 스페이스X와 어떻게 연결되어 있는지 상세히 분석했습니다.
스페이스X 상장이 계속 미뤄지는 진짜 이유를 파헤쳤습니다. 화성 계획, 스타링크 분리, 국방 계약... 머스크가 절대…