printf("ho_tari\n");

카카오톡으로 주식 시세 메세지 보내기 (python) 본문

Raspberry Pi

카카오톡으로 주식 시세 메세지 보내기 (python)

호타리 2023. 9. 22. 14:15

<stockpricesendtokakaotalk.py>

import json
import requests
import time
from bs4 import BeautifulSoup
# json 라이브러리는 JSON 데이터를 다루기 위해 사용
# requests 라이브러리는 웹페이지에서 데이터를 가져오고 카카오톡 메시지를 전송하기 위해 사용
# time 라이브러리는 프로그램을 일정 시간 동안 일시 중지하기 위해 사용
# beautifulsoup 라이브러리는 HTML 파싱을 위해 사용

def sendToMeMessage(text):  # 주어진 텍스트 메세지를 카카오톡으로 보내는 함수
    header = {"Authorization":"Bearer "+ KAKAO_TOKEN}
    # authorization 헤더에는 카카오톡 API 토큰이 포함
    url = "https://kapi.kakao.com/v2/api/talk/memo/default/send"
    post = {
        "object_type":"text",
        "text":text,
        "link":{
            "web_url":"https://developers.kakao.com",
            "mobile_web_url":"https://developers.kakao.com"
            },
        "button_title":"immediately confirm"
        }
    # post 딕셔너리는 메시지의 내용과 링크 정보가 설정
    data = {"template_object":json.dumps(post)}
    # data 딕셔너리는 template_object 키를 사용하여 메시지 데이터 JSON 형식으로 변환
    return requests.post(url,headers=header,data=data)
    # requests.post() 함수를 사용하여 메시지를 카카오톡으로 전송
KAKAO_TOKEN = "카카오톡 토큰"	# 사람마다 토큰 다 다름, 카카오톡 API 토큰 설정

def get_price(com_code):
# 네이버 금융 웹페이지에서 주식 가격 정보를 가져오는 함수
# 주어진 종목 코드(com_code)를 사용하여 해당 종목의 현재 주식 가격을 가져온다
    url = "https://finance.naver.com/item/main.nhn?code=" + com_code
    result = requests.get(url, headers={'User-agent':'Mozilla/5.0'})
    bs_obj = BeautifulSoup(result.content,"html.parser")
    no_today = bs_obj.find("p",{"class":"no_today"})
    blind_now=no_today.find("span",{"class":"blind"})
    return blind_now.text
try:
    while True: 
    # 무한 루프를 사용하여 주식 가격 정보를 가져와서 카카오톡 메시지를 주기적으로 전송
    # time.sleep(60.0)은 60초(1분)마다 한 번 실행
        text1 = "삼성전자의 현재 가격은 " + get_price("035720") + "입니다."
        print(sendToMeMessage(text1).text)
        text2 = "카카오의 현재 가격은 " + get_price("035720") + "입니다."
        print(sendToMeMessage(text2).text)
        text3 = "네이버의 현재 가격은 " + get_price("035720") + "입니다."
        print(sendToMeMessage(text3).text)
        time.sleep(60.0)
except KeyboardInterrupt:
    pass

<compile 결과>