데이터과학자 - 과제
멘토링 과제 - 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")