파이썬/크롤링

[python-파이썬] 13 mk증권에서 시간외단일가 크롤링 (crawling)

모두의 실험실 2022. 4. 30. 14:44
728x90

 


안녕하세요. 모두의 파이썬입니다. 개인별 주식매매하는 방법이 다릅니다. 시간 외 단일가 매매는 시간 외 단일가 기반으로 다음 거래일에 매매하는 방식입니다. 전일 시간 외 단일가가 10%(상한가) 경우에 다음 거래일 장시 시작가격 변동이 커질 수 있습니다. 큰 가격 변동이 매매에 중요한 지표가 될 수 있습니다. 구글링하여 mk 증권에서 시간 외 단일가 정보를 제공하는 것을 확인했습니다. 모두의 파이썬은 1위를 추종하므로 삼성전자(005930) 단일가를 크롤링 하겠습니다. http://vip.mk.co.kr/newSt/price/current9.php?stCode=005930 맨 뒤에 종목코드를 변경하면서, 원하는 종목의 시간 외 단일가 정보를 크롤링 할 수 있습니다

전체 글을 요약하면, mk 증권에서 삼성전자 시간 외 단일가 정보를 크롤링 하겠습니다. 결과는 종목명, 코드, 상승률, 현재가, 시간 외 단일 가입니다.

mk 증권 시간 외 단일가 정보를 얻을 수 있는 url로 접속해 보겠습니다. http://vip.mk.co.kr/newSt/price/current9.php?stCode=005930

ⓒ삼성전자 시간외단일가 정보, 출처 mk증권


크롤링의 시작은 개발자도 구 접속(F12 or 우 클릭>검사)이다. 시간 외 단일 가격이 포함된 테이블의 tag와 속성을 먼저 확인했는데, table_3가 전체 페이지에 3개이며, 시간 외 단일가가 포함된 테이블이 2번째이므로 fild_all('table',{'class' : 'table_3')[1]를 사용하여 결과를 얻고, 최종 시간 외 단일가는 가장 최신 거래이므로 find_all('tr', {'class':'gray'}) list 0번째 값을 얻고, find_all('td')의 list 1번째 값으로 시간 외 단일가를 최종 크롤링 할 수 있다

ⓒ삼성전자 시간외단일가 정보, 출처 mk증권


상승률(100*(시간 외/현재가 -1))을 계산하기 위해 현재가도 크롤링 해야 한다. tag 속성이 'f3_r'로 유일하다. find('font',{'class' : 'f3_r'})로 현재가를 크롤링 한다. 추가적으로 종목명 find('font', {'class' : 'f1'})로 쉽게 크롤링 할 수 있다.

ⓒ삼성전자 시간외단일가 정보, 출처 mk증권


전체 코드는 다음과 같다.

 

 

 

 

 

In [1]:
## 시간외 단일가 크롤링 (crawling) 
## 시간외 단일가 크롤링 (crawling)

import requests
from bs4 import BeautifulSoup
    
def get_html(url):
    ## 브라우저 호환을 위해서 설정
    headers = {
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 '+ \
        '(KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36'
                } 
    ##해당 url에 htlm(정보) 요청에사용 / url은 사용자가 원하는 url
    r = requests.get(url, headers=headers) 
    ## 해당 url의 html을 사용자가 활용하기 쉽게 변환
    html = BeautifulSoup(r.content, 'html.parser')
    ## 결과값 전달
    return html

def get_stock_after_market_crawling(code):
    url = 'http://vip.mk.co.kr/newSt/price/current9.php?stCode=' + code
    html = get_html(url)

    ##사이트에 table 3개중 2번째
    table = html.find_all('table', {'class' : 'table_3'})[1]
    ##가장최근거래 / 가장마지막거래
    l_hoga = table.find_all('tr', {'class' : 'gray'})[0]  
    ## 체결가 / 거래의 리스트 0: 체결시간 1: 체결가 2: 쳬결량
    t_hoga = int(l_hoga.find_all('td')[1].text.replace(',',''))
    ##현재가정보
    p_current = int(html.find('font', {'class' : 'f3_r'}).text.replace(',',''))
    ##시간외 체결가 상승률
    ratio = round(100*(t_hoga/p_current - 1),2)
    ##종목이름
    n_stock = html.find('font', {'class' : 'f1'}).text        
    print([n_stock,code,str(ratio)+'%',p_current,t_hoga])
    
get_stock_after_market_crawling('005930')
 
['삼성전자', '005930', '0.0%', 67400, 67400]

 

시간 외 단일가 이외에도 파이썬을 활용하여 다양한 주식 관련 정보를 크롤링 할 수 있으며, 더 나아가 알고리즘 또한 설계 가능하다.

print('모두의 파이썬')
※좋아요/댓글은 서로를 응원합니다!

 

728x90
반응형