-
[파이썬 크롤링, ETF 자산배분투자] 실시간 주가 확인 네이버 vs 다음 [1]자산배분 투자 2020. 3. 27. 07:26
파이썬 크롤링으로 네이버와 다음에서 실시간 주가를 확인하려고 한다.
12개 ETF 관심종목에 대해 2개의 포털 크롤링 속도를 비교하였다.
소스 코드는 맨 아래에 있다.
In [1]:import pandas as pd from pandas import Series, DataFrame from datetime import datetime, timedelta import requests import re from bs4 import BeautifulSoup import time
기초자료 파일¶
종목명
,종목코드
를 포함한 정보가 들어 있다.
In [2]:기초자료 = '기초자료.xlsx' pd.read_excel(기초자료)
Out[2]:In [3]:url_네이버 = 'https://finance.naver.com/item/main.nhn?code='
In [4]:def get_bs(종목코드): """ 종목코드를 입력받아 bs를 출력 """ url = url_네이버 + str(종목코드) result = requests.get(url) bs = BeautifulSoup(result.content, "html.parser") return bs
In [5]:def 현재가_조회_개별(종목코드): """ 종목코드 1개를 입력받아 현재가와 조회시간을 출력 """ bs = get_bs(종목코드) 오늘정보 = bs.find('p', {'class': 'no_today'}) 현재가 = 오늘정보.find('span', {'class': 'blind'}).text 현재가 = int(현재가.replace(',', '')) 조회시간 = bs.find('em', {'class': 'date'}).text 조회시간 = re.sub(r'[^\d\.\s:]', '', 조회시간).strip() 조회시간 = re.sub(r'\s+', ' ', 조회시간) if ':' in 조회시간: #장중이면: 2020.03.27 15:24 기준(장중) 조회시간 = datetime.strptime(조회시간, '%Y.%m.%d %H:%M') else: 조회시간 = datetime.strptime(조회시간, '%Y.%m.%d') return (현재가, 조회시간)
In [6]:def 현재가_조회_목록(기초자료): """ 종목코드 다수(xls)를 입력받아 현재가와 조회일을 출력 """ 종목 = pd.read_excel(기초자료, sheet_name='종목') 종목['임시'] = 종목['종목코드'].map(lambda x: 현재가_조회_개별(x)) 종목['현재가'] = 종목['임시'].map(lambda x: x[0]) 종목['조회일'] = 종목['임시'].map(lambda x: x[1]) 종목.drop('임시', axis=1, inplace=True) return 종목
코드 실행 결과¶
- 생각보다 시간이 오래(
41.4초
) 걸렸다.
In [7]:start = time.time() 현재가 = 현재가_조회_목록(기초자료) end = time.time() print('네이버에서 {}개의 종목을 조회하는데 {}초가 걸렸습니다.'.format(len(현재가), round(end - start, 1))) 현재가
Out[7]:`다음`에서 크롤링한 데이터는 "다음" 포스팅에서 확인해 보자.
반응형'자산배분 투자' 카테고리의 다른 글
Maxims for sustainable investment in stock market (0) 2020.04.01 ETF 자산배분투자 매매량 계산 파이썬 코드 (0) 2020.03.30 [파이썬 크롤링, ETF 자산배분투자] 실시간 주가 확인 네이버 vs 다음 [2] (0) 2020.03.28 은행 예금으로만 노후준비를 하면 안되는 이유 (0) 2020.03.24 당신의 노후는 안녕한가? (0) 2020.03.08