네이버 증권 사이트에서 주가 데이터를 수집해보자
- 수집할 데이터 : 일별 kospi, kosdaq 주가, 일별 환율(exchange rate) 데이터
네이버 증권은 pc웹페이지는 복잡한데 모바일은 깔끔하다
여기서 데이터받아올 url 을 보는 방법은(크롬 기준)
1. F12 클릭해서 개발자 창 보기
2. 네트워크로 들어가기
3. 네트워크 로그 초기화 (좌측 상단에 빨간색 정지버튼 옆에 버튼 있음)
4. 알고싶은 정보 화면에서 더보기 클릭
5. 개발자 창에서 price 관련 로그 확인
6. 그 url 복사 (보통 api 어쩌구 되어있음 )
import requests
import pandas as pd
url = 'https://m.stock.naver.com/api/index/KOSPI/price?pageSize=10&page=2'
response = requests.get(url) #response로 선언
response
( 위 url은 네이버 증권주가 url 이다)
이 코드를 실행해서 Response [200]뜨면 성공이다
data = response.json()
df = pd.DataFrame(data)[['localTradedAt', 'closePrice']]
df.tail(2)
데이터 프레임 형태로 바꿔서 원하는 값면 컬럼에 넣어서 출력하면
이런식으로 나온다.
데이터프레임 형태로 바꾸기 전에는 리스트 안에 딕셔너리 형태였다.
[{"localTradedAt":"2024-09-12","closePrice":"2,572.09","compareToPreviousClosePrice":"58.72","compar'
def stock(code='KOSPI', page_size=10, page=1):
# 1. URL
url = f'https://m.stock.naver.com/api/index/{code}/price?pageSize={page_size}&page={page}'
print(url)
# 2. request(URL) > response(JSON(str))
response = requests.get(url)
# 3. JSON(str) > list, dict > DataFrame
data = response.json()
return pd.DataFrame(data)[['localTradedAt', 'closePrice']]
df = stock(code='KOSDAQ',page_size = 60,page = 3)
df.head(2)
과정을 함수로 만들어서 원하는 만큼의 데이터를 가져올 수 있다.
참고로 네이버 증권은 한번에 page_size = 60을 최대로 걸어놓았다.