티스토리 뷰
반응형
1. beautifulsoup4 설치
pip install beautifulsoup4
2. import
import requests
from bs4 import BeautifulSoup
import time
3. get_code 함수 정의
종목코드를 받아와서 네이버 금융에서 해당 종목의 HTML 코드 가져오기
def get_code(company_code):
url = f"https://finance.naver.com/item/main.naver?code={company_code}"
result = requests.get(url)
bs_obj = BeautifulSoup(result.content, "html.parser")
return bs_obj
4. get_price 함수 정의
가격 크롤링
def get_price(company_code):
bs_obj = get_code(company_code)
div_today = bs_obj.find("div", {"class": "today"})
no_today = div_today.find("p", {"class": "no_today"})
price = no_today.find("span", {"class": "blind"}).text
return price
5. get_compare 함수 정의
전일대비 등락률 크롤링
def get_compare(company_code):
bs_obj = get_code(company_code)
no_exday = bs_obj.find("p", {"class": "no_exday"})
em = no_exday.find("em")
em_ico = em.find("span", {"class": "ico"}).get("class")[1]
compare_price = em.find("span", {"class": "blind"}).text
if em_ico == "up":
compare_price = "+" + compare_price
elif em_ico == "down":
compare_price = "-" + compare_price
return compare_price
6. 가격이 변동이 있을 때만 가격 및 전일대비 출력
while True:
price = get_price(company_code)
if previous_price != price:
previous_price = price
compare = get_compare(company_code)
print(price, compare)
time.sleep(0.5)
7. 전체 소스
import requests # requests 모듈 import
from bs4 import BeautifulSoup # BeautifulSoup 모듈 import
import time # time 모듈 import
# 삼성전자 (005930) 기준
company_code = "005930" # 삼성전자 종목코드 저장
previous_price = None # 이전 가격 저장 변수 초기화
def get_code(company_code):
# 종목코드를 받아와서 네이버 금융에서 해당 종목의 HTML 코드 가져오기
url = f"https://finance.naver.com/item/main.naver?code={company_code}"
result = requests.get(url) # GET 요청
bs_obj = BeautifulSoup(result.content, "html.parser") # HTML 코드를 파싱
return bs_obj # 파싱된 HTML 코드 객체 반환
def get_price(company_code):
bs_obj = get_code(company_code) # 종목코드로부터 파싱된 HTML 코드 가져오기
div_today = bs_obj.find("div", {"class": "today"}) # 현재가가 있는 div 태그 찾기
no_today = div_today.find("p", {"class": "no_today"}) # 현재가가 있는 p 태그 찾기
price = no_today.find("span", {"class": "blind"}).text # 현재가가 있는 span 태그의 class 속성값이 blind인 태그의 텍스트 가져오기
return price # 현재가 반환
def get_compare(company_code):
bs_obj = get_code(company_code) # 종목코드로부터 파싱된 HTML 코드 가져오기
no_exday = bs_obj.find("p", {"class": "no_exday"}) # 전일 대비가 있는 p 태그 찾기
em = no_exday.find("em") # 전일 대비가 있는 em 태그 찾기
em_ico = em.find("span", {"class": "ico"}).get("class")[1] # em 태그 내부의 span 태그의 class 속성값 가져오기
compare_price = em.find("span", {"class": "blind"}).text # 전일 대비의 가격이 있는 span 태그의 class 속성값이 blind인 태그의 텍스트 가져오기
if em_ico == "up":
compare_price = "+" + compare_price
elif em_ico == "down":
compare_price = "-" + compare_price
return compare_price # 전일 대비 가격 변동 정보 반환
while True:
price = get_price(company_code) # 현재가 가져오기
if previous_price != price: # 이전에 가져온 현재가와 현재 가져온 현재가가 다르다면
previous_price = price # 이전 현재가를 현재 현재가로 업데이트
compare = get_compare(company_code) # 전일 대비 가격 변동 정보 가져오기
print(price, compare) # 현재가와 전일 대비 가격 변동 정보 출력
time.sleep(0.5) # 0.5초 간격으로
반응형
'Dev > Python' 카테고리의 다른 글
파이썬 날짜, 시간 구하기 (1) | 2023.04.21 |
---|---|
conda env 가상환경 생성, 삭제, 리스트, 활성화, 비활성화 (0) | 2023.04.13 |
OpenCV 기본 - 설치, 카메라, 이미지, 비디오 출력 (0) | 2023.02.09 |
[TensorFlow] Mac M1 에서 TensorFlow 설치 (0) | 2023.02.09 |
아나콘다(Anaconda) - 파이썬 가상 환경 설정 (0) | 2023.02.08 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 사업기회포착
- 창업교육전문가
- ChatGPT
- homebrew
- 기업가
- flutter doctor
- 날짜 시간 추출
- 기업가 정신
- 가상환경
- Format code on save
- 설치
- 파이썬
- youChat
- Python
- Flutter
- 네이버실시간주식
- 자질
- 기본
- Auto Formatting
- 플러터 오류
- 맥
- parsing error
- conda
- translaite
- 맥 실리콘
- M1
- 창업
- 플러터
- No Babel
- 창업지도사
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
글 보관함