이번에는 네이버 금융에서 주식 시세를 받아와 보겠습니다.
우선 URL을 살펴보겠습니다.
https://finance.naver.com/item/main.naver?code=276730
제주맥주 라는 기업의 주가창 URL입니다.
?code=276730 이 부분이 주가창에 나오는 기업을 나타냅니다.
자기가 원하는 기업의 코드로 바꿔도 되는거죠.
여기서 우리에게 필요한건 일별 시세입니다.
https://finance.naver.com/item/sise_day.nhn?code=276730&page=1
이 URL 로 이동한 후 소스 검사를 해보면
맨뒤 라는 글자에 일별시세 마지막 창인 18번이 링크되어있습니다.
<a href="/item/sise_day.nhn?code=276730&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 |
댓글