본문 바로가기
코딩 공부

뷰티풀 수프로 네이버에서 주식시세 받아오기

by Camel_coding_food 2022. 2. 14.
반응형

 

귀엽네요

 

 

이번에는 네이버 금융에서 주식 시세를 받아와 보겠습니다.

 

우선 URL을 살펴보겠습니다.

 

https://finance.naver.com/item/main.naver?code=276730 

 

제주맥주 - 네이버 금융 : 네이버 금융

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

finance.naver.com

제주맥주 라는 기업의 주가창 URL입니다.

 

?code=276730 이 부분이 주가창에 나오는 기업을 나타냅니다.

 

자기가 원하는 기업의 코드로 바꿔도 되는거죠.

해당 URL이 이동하는 페이지

 

여기서 우리에게 필요한건 일별 시세입니다.

 

https://finance.naver.com/item/sise_day.nhn?code=276730&page=1 

 

이 URL 로 이동한 후 소스 검사를 해보면

 

맨뒤 라는 글자에 일별시세 마지막 창인 18번이 링크되어있습니다.

 

<a href="/item/sise_day.nhn?code=276730&amp;page=18"  >맨뒤

주가는 계속 갱신되므로 나중에는 18이 더 큰 숫자로 바뀌어 있을겁니다.

 

 

여기서 변하지 않는건 '맨뒤' 라는 글자입니다.

 

이제부터 뷰티풀 수프를 이용하여 웹스크래핑을 진행해보겠습니다.

 

뷰티풀 수프 라이브러리를 일단 다운로드해야합니다

 

cmd 창에 pip install beautifulsoup4

pip install lxml 을 입력해줍니다.

 

그 후에 cmd 창에서 실행된 Python에

# from bs4 import BeautifulSoup
# import requests
# url = 'https://finance.naver.com/item/sise_day.nhn?code=276730&page=1'
# html = requests.get(url, headers={'User-agent':'Mozila/5.0'}).text
# bs = BeautifulSoup(html, 'lxml')
# pgrr = bs.find('td', class_='pgRR')
# print(pgrr.a['href'])


import pandas as pd 
from matplotlib import pyplot as plt 
from bs4 import BeautifulSoup 
from urllib.request import Request, urlopen 
url = 'https://finance.naver.com/item/sise_day.nhn?code=068270&page=1' 
req = Request(url, headers={'User-Agent': 'Mozilla/5.0'}) 
with urlopen(req) as doc:
    html = BeautifulSoup(doc, 'lxml') 
    pgrr = html.find('td', class_='pgRR') 
    s = str(pgrr.a['href']).split('=') 
    last_page = s[-1]

위 코드를 입력해줍니다.

 

제가 사용하던 책에는 (파이썬 증권미디어 분석)

크롤링 대상에게 브라우저 정보를 전해주지 않았지만

무분별한 웹크롤링 방지를 위해

정보를 전달해주지 않으면 크롤링이 불가능하도록 

그사이에 바뀌었더군요.

 

그래서 아래 코드처럼 바꿔주면 됩니다.

 

각 코드에 대해 알아봅시다.

 

 req = Request(url, headers={'User-Agent': 'Mozilla/5.0'})

#Request 생성자에 url과 header 인자를 전해준다.

 

 

with urlopen(req) as doc:

with as문을 이용하여 urlopen 함수가 전달 받은 url을 열고,

열린 해당 url을 변수 doc로 뷰티풀 수프에 전달한다.

 

s = str(pgrr.a['href']).split('=') 
    last_page = s[-1]

위에서 구한 문자열을 = 문자 기준으로 3개로 나누어 마지막 원소의 수를 전체 페이지 수로 인지한다.

문자열을 뒤어서부터 읽기 위해 파이썬에선 -1을 사용한다.

 

 

 

 


이렇게 일일 주가의 맨뒤 페이지를 읽어왔습니다.

 

다음번에는 전체 페이지를 읽어오는걸 시도해보겠습니다.

반응형

'코딩 공부' 카테고리의 다른 글

창업을 위한 애자일 소프트웨어 개발 시작  (0) 2023.07.08
MySQL.....?  (0) 2022.02.17
코딩 초보 꿀팁 (?)  (0) 2022.02.16
나의 깃허브 링크  (0) 2022.02.09

댓글