보통의 웹사이트는 많은 내용들이 포함되어 있어 단순히 웹사이트 페이지 가져오기만으로는 필요한 내용을 보기가 힘듭니다.
그래서 이번에는 요즘 많은 관심을 가지고 있는 주식의 주가를 쉽게 볼 수 있는 코드를 만들어 보기로 했습니다.
실시간으로 볼려면 한국거래소 등에서 제공하는 API를 사용한다고 하지만, 실제로 일반 개인에게는 개방을 하지 않는거 같습니다.
그래서 누구나 쉽게 접근할 수 있는 네이버 증권 사이트를 이용하기로 했습니다. 아시다시피 일반 포털에서 제공하는 정보는 실시간으로 주가 정보를 제공하지는 않지만, 증권사 페이지에 로그인하지 않으면서 참고로 주가를 알아보는데는 지장이 없을거 같습니다.
아래는 실제 네이버 증권 사이트에서 "삼성전자" 종목명을 조회하면 나오는 화면입니다.
주가를 알아내려면 이 화면의 실제 페이지 내용이 필요한데, 브라우저의 "페이지 소스보기" 메뉴를 사용하면 됩니다.
페이지 내용을 보면 많은 태그를 포함하는 html 내용이 나오는데, 그중에서 종목명에 대한 주가 정보는 아래와 같이 찾을 수 있습니다.
<dl class="blind"> <dt>종목 시세 정보</dt> <dd>2021년 02월 26일 16시 11분 기준 장마감</dd> <dd>종목명 삼성전자</dd> <dd>종목코드 005930 코스피</dd> <dd>현재가 82,500 전일대비 하락 2,800 마이너스 3.28 퍼센트</dd> <dd>전일가 85,300</dd> <dd>시가 82,800</dd> <dd>고가 83,400</dd> <dd>상한가 110,500</dd> <dd>저가 82,000</dd> <dd>하한가 59,800</dd> <dd>거래량 36,715,024</dd> <dd>거래대금 3,026,814백만</dd> </dl> |
우리가 필요한건 dl 태그내의 내용입니다.
그래서 아래와 같이 코드를 작성해보았습니다. 여기서 "005930"은 삼성전자 종목코드인데, 다른 종목을 조회하려면 그에 맞는 종목코드로 바꾸면 됩니다.
import requests from bs4 import BeautifulSoup url = "https://finance.naver.com/item/main.nhn?code=005930" #삼성전자 종목코드를 포함하는 url response = requests.get (url) if response.status_code == 200: html = response.text soup = BeautifulSoup (html, 'html.parser') print (soup.dl.text) #태그내의 텍스트를 추출하여 출력 |
이 코드를 실행시키면 아래와 같이 텍스트만 추출해서 깨끗하게 출력이 됩니다.
D:\MyPyWork>python stock1.py 종목 시세 정보 2021년 02월 26일 16시 11분 기준 장마감 종목명 삼성전자 종목코드 005930 코스피 현재가 82,500 전일대비 하락 2,800 마이너스 3.28 퍼센트 전일가 85,300 시가 82,800 고가 83,400 상한가 110,500 저가 82,000 하한가 59,800 거래량 36,715,024 거래대금 3,026,814백만 |
물론 여기서 좀더 가공하면 더 보기좋게 할 수도 있겠습니다.
댓글 없음:
댓글 쓰기