RedMeta

How to Python Stock Crawling

안녕하세요
2020년부터 시작해서 2021년 투자 열풍으로 주식에 관심을 가지신 분들이 많아지셨는데요
오늘은 파이썬과 네이버금융 (주식)을 이용해서 주식 종목 정보를 크롤링해서
원하는 정보를 뽑아오는 방법에 대해서 알아보겠습니다

상세하게는 네이버 증권의 주식 인기 검색 목록을 불러오는 방법에 대해서 알아보도록하겠습니다

불러올 페이지의 정보는 아래와 같습니다

네이버 증권 사이트의 홈 페이지 입니다
주식을 하시는 분들이라면 한번쯤 보셨을 사이트 입니다
국개 증시의 주요 뉴스와 주식의 세부적인 정보들을 잘아보기 쉽게 해놓은 사이트 입니다

https://finance.naver.com/

 

네이버 금융

국내 해외 증시 지수, 시장지표, 펀드, 뉴스, 증권사 리서치 등 제공

finance.naver.com

 

네이버 증권

홈페이지에 들어오시면 이런 모습을 보실 수 있습니다
코스피 지수가 우 상향을 하는 모습을 볼 수 있네요
제 블로그도 우상향 중입니다

 

먼저 크롤링이 가능한지 확인부터 하셔야합니다
사이트 들은 robots 으로 외부 봇들이 활동을 할 수 있게 할 것인지 거부할 것인지 정의할 수 있습니다
네이버 증권도 사이트 관리자가 정해두었겠죠?
보통 사이트 URL 뒤에 /robots.txt 를 붙여 보시면 나옵니다

https://finance.naver.com/robots.txt

Disallow, allow 허용할건지 안할건지 나오게 됩니다
/ 는 전체라고 보시면 되는데
Allow 가능한 사이트가 몇개 보이네요
그 중 저는 /sise/ 를 사용하도록 하겠습니다

https://finance.naver.com/sise/

 

국내증시 : 네이버 금융

관심종목의 실시간 주가를 가장 빠르게 확인하는 곳

finance.naver.com

sise 를 보니 국내증시를 나타낸 사이트네요

코스피, 코스닥, 코스피200 등의 지수들을 볼 수 있고
여러 정보들도 많이 확인할 수 있네요
여기서 저는 우측에 있는 인기 검색 종목 을 크롤링해서 사용해 보도록 하겠습니다

 

역시 삼성전자가 항상 1등을 차지하고 있는 것을 볼 수 있네요
화제의 카카오도 있고 아쉽게 이 순간에는 네이버는 보이지 않네요
여기서 저는 1. 삼성전자 가격 이런식으로 텍스트로 된 정보들을 전부 가져오도록 하겠습니다

 

먼저 개발자 도구(F12)를 열어 줍니다 여기서 Elements 로 들어가서
크롤링을 원하는 곳을 ctrl + shift + c 를 눌러서 원하는 객체를 select 해줍니다

 

참 쉽죠

import requests
from bs4 import BeautifulSoup

req = requests.get('https://finance.naver.com/sise/')
html = req.text
soup = BeautifulSoup(html, 'html.parser')

my_stock = soup.select(
'.lst_pop'
)

for stock_name in my_stock:
	print(stock_name.text)

코드를 선 공개 하도록 하겠습니다
사실 하나하나 하기에는 간단하기도 하고 이해하는데 어렵습니다
크롤링은 beautifulsoup 라는 패키지로 많이들 하게 되는데요

코드 설명 드리겠습니다

1
2
3
4
5
6
7
8
9
10
11
12
13
import requests # requests 패키지 import
from bs4 import BeautifulSoup # beautilfulsoup4 패키지 import
 
req = requests.get('https://finance.naver.com/sise/') # requests.get으로 url의 html 정보들을 가져옵니다
html = req.text # html 정보에서 text 정보만 빼서 html 변수에 넣어 줍시다
soup = BeautifulSoup(html, 'html.parser') # html.parser 로 파싱해 줍니다
 
my_stock = soup.select( # 여기가 제일 중요한 부분입니다 my_stock 변수에 select 할 정보를 찾아서 넣어줍니다
'.lst_pop'
)
 
for stock_name in my_stock: # select 한 정보를 한줄한줄 print 하기 위해 for 문을 이용합니다
print(stock_name.text)
 
 
 
cs

우선 사용자 분이 가져와야할 부분이
soup.select 에서
.lst_pop 입니다
가져오는 방법을 알려드리겠습니다

크로미움의 개발자도구로 가져와야 합니다

 

class 로 묶여있네요
클래스는 .lst_pop 로 쩜을 이용해 사용할 수 있습니다

 

실행해 보시면 정상적으로 불러와진 것을 볼 수 있습니다
저는 class 만 불러왔지만 더 상세하게 1. 만, 삼성전자 부분만, 가격부분만 불러오고 싶으시다면
클래스안에 id 나 태그 부분까지 입력해서 가져오시면 됩니다

궁금하신점은 댓글 남겨주시고 좋아요, 구독 부탁드립니다

2020.12.21 - [Python] - 파이썬 구글 이미지 크롤링 강의 / 연예인 사진 수집 / 이미지 크롤링 방법 / Selenium 사용법

 

파이썬 구글 이미지 크롤링 강의 / 연예인 사진 수집 / 이미지 크롤링 방법 / Selenium 사용법

크롤링이란 웹 페이지를 가져와서 데이터를 사용자의 목적과 필요에 맞게 추출해 내는 행위입니다 검색엔진에서도 거의 필수적으로 사용하는데 검색엔진에서 사용하는 이유는 웹상의 다양한

hnm1.tistory.com

 

공유하기

facebook twitter kakaoTalk kakaostory naver band