상장주식의 일별 정보를 가져오려고 합니다.
네이버 금융에서 제공하는 정보를 통해서 정보를 가져오려고 합니다.
이와 관련한 책도 나와 있습니다. 해당 책을 읽으며 변경된 사항을 반영하여 저도 한번 따라가 보려합니다.
목표는 저 일별시세 페이지를 넘겨가면서 일자별 정보(종가, 전일비, 시가, 고가, 저가, 거래량)을 가져오는 것인데
먼저는 카카오의 경우는 몇페이지나 있는지를 파악하는 것입니다.
그래야 얼마나 넘길지를 알아야 하니까요.
하긴 넘기면서 마지막 페이지가 나오면 그만하는 방식도 있을 것 같네요.
우선은
python 코드는 아래와 같습니다.
크롤링을 위해서 BeautifulSoup을 사용하였습니다.
자신의 시스템의 브라우저 정보를 네이버에 제공해야 하는데 , 그 정보를 쉽게 찾을 수 있도록 해주는 링크입니다.
실행하면 아래의 정보가 나옵니다. 아래 정보를 아래 소스에 반영하면 되겠습니다.
실행한 코드는 아래와 같이 동작합니다.
카카오는 535 페이지가 있다고 정보를 알려주네요.
이제는 일별데이터를 가지고 오도록 하겠습니다.
아래 소스는 특정 종목(035720:카카오) 의 데이터의 페이지수를 확인하고, 그 페이지수만큼 넘겨가며 데이터를 가져오는 소스입니다. 2021년 8월 18일에 동작하는 것을 확인하였습니다.
실행결과입니다.
* 아래는 소스입니다.
from bs4 import BeautifulSoup
from urllib.request import urlopen
import pandas as pd
import requests
url = "http://finance.naver.com/item/sise_day.nhn?code=035720&page=1"
with urlopen(url) as doc:
html = BeautifulSoup(requests.get(url, headers={'User-agent': 'Mozilla/5.0'}).text,'lxml')
pgrr = html.find('td',class_='pgRR')
s=str(pgrr.a['href']).split('=')
last_page = s[-1]
print (last_page) #마지막 페이지 인쇄
df = pd.DataFrame()
price_url = 'http://finance.naver.com/item/sise_day.nhn?code=035720'
for page in range(1, int(last_page) + 1):
page_url = '{}&page={}'.format(price_url,page)
df = df.append(pd.read_html(requests.get(page_url,headers={'User-agent': 'Mozilla/5.0'}).text)[0])
df=df.dropna()
도움이 되셨기를 바라며 그럼 즐거운 시간 되시기 바랍니다.
코로나 시국에 제주도는 어디지역 사람들이 제일 많이 갈까요? (0) | 2022.01.08 |
---|---|
세종시 사람들은 주말에 주로 어디로 이동할까요? (0) | 2022.01.08 |
2022 국제 금 시세 리뷰와 2023년 전망 (0) | 2022.01.02 |
2022년 대한민국의 트렌드 예측 (0) | 2022.01.02 |
로또의 규칙성 (0) | 2021.05.24 |