데이터과학자 - 과제

멘토링 과제 - python 웹크롤링

vs질럿 2021. 6. 13. 23:35

1. http://data.krx.co.kr/contents/MDC/MDI/mdiLoader/index.cmd?menuId=MDC0201020201에서 

    국내주식정보 가져오기

2. https://finance.naver.com/item/sise_day.nhn?code={}&page={}에서

    가져온 정보 중 종목코드를 이용해 일별시세 가져오기

 

============================================================================

페이지에서 조회를 누르면 전종목 기본정보가 넘어온다. 이를 개발자 도구의 네트워크 탭에서

데이터를 요청하는 주소와 기타 정보들을 확인할 수 있다.

 

GET방식은 요청 주소에 data를 같이 보내지만 POST방식은 따로 data를 보내줘야한다.

 

import requests
import pandas as pd


url = "http://data.krx.co.kr/comm/bldAttendant/getJsonData.cmd"  #
head = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) '
                      'AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36'}
data = {"bld": "dbms/MDC/STAT/standard/MDCSTAT01901",
"mktId": "ALL",
"share": "1",
"csvxls_isNo": "false"}
r = requests.post(url, headers=head, data=data)

Ticker = []
for i in r.json()['OutBlock_1']:
    Ticker.append([i['ISU_SRT_CD'], i['ISU_NM']])

for j in Ticker:
    print(j[1])
    for k in range(1,4):
        url = f"https://finance.naver.com/item/sise_day.nhn?code={j[0]}&page={k}"
        head = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) '
                              'AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36'}
        r = requests.get(url, headers=head)
        print(pd.read_html(r.text)[0].dropna())
        print()
    print("\n===========================================================\n\n")