https://m.stock.naver.com/sise/siseIndex.nhn?code=KOSPI
코스피 주가 크롤링을 위해 네이버 증권을 이용하였다.
해당페이지에서 크롤링하기 전 먼저 살펴보아야하는 것이 있다.
먼저 F12를 누른다음 'NETWORK'탭으로 들어간다.
하지만 스크롤을 좀만 내리다보면
스크롤을 더 내리다보면
아무것도 누르지 않고 단지 스크롤만 내렸을 뿐이지만 신호가 왔다갔다하는 것을 볼 수 있다.
이번에는 저 링크로 들어가보겠다.
처음에 네이버증권을 틀었을때는 이용자가 어느정도까지 스크롤을 내릴지 모르기 때문에 데이터를 가지고 오지 않는다.
그리고 이용자가 스크롤을 내리면 그제서야 그만큼의 데이터를 가지고 오는것이다.
네이버에서 스크롤을 내릴때마다 데이터를 이용자의 웹에 전송하고 이용자의 웹브라우저가 이를 재구성해서 화면에 표시해주는 것이다.(1페이지, 2페이지 이렇게 데이터를 전송해 준다.)
따라서 크롤링 역시 페이지 단위로 실시하여야한다.
위의 사실을 감안하여 크롤링 코드를 작성하였다.
base_url = 'https://m.stock.naver.com/api/json/sise/dailySiseIndexListJson.nhn?code=KOSPI&pageSize=100&page={}'
import requests
from pprint import pprint
url = base_url.format(1)
for page in range(1,10): #10페이지 까지 가지고 온다.
url = base_url.format(page)
print(url)
#결과
https://m.stock.naver.com/api/json/sise/dailySiseIndexListJson.nhn?code=KOSPI&pageSize=100&page=1
https://m.stock.naver.com/api/json/sise/dailySiseIndexListJson.nhn?code=KOSPI&pageSize=100&page=2
https://m.stock.naver.com/api/json/sise/dailySiseIndexListJson.nhn?code=KOSPI&pageSize=100&page=3
https://m.stock.naver.com/api/json/sise/dailySiseIndexListJson.nhn?code=KOSPI&pageSize=100&page=4
res.text코드로 res를 확인해보면
'result' 밑에 'siseList'가 있고 그 밑에 데이터들이 있는 것을 볼 수 있다.
import pandas as pd
url = base_url.format(1) #첫페이지만 가지고 온다.
res = requests.get(url)
if res.status_code == 200:
data = res.json()
kospi_list = data['result']['siseList']
pprint(kospi_list)
df = pd.DataFrame(kospi_list)
#결과
728x90
반응형
'Data Engineering > Crawling' 카테고리의 다른 글
[Crawling] Selenium (0) | 2020.08.05 |
---|---|
[Crawling] 쿠팡(Coupang)검색결과 크롤링 (3) | 2020.08.05 |
[Crawling] 네이버 OPEN-API를 이용한 네이버 뉴스 크롤링 (1) | 2020.08.04 |
[Crawling] 네이버 개발자 API 가입 (0) | 2020.08.04 |
[Crawling] Daum 뉴스기사 크롤링 (0) | 2020.08.04 |