1. 토큰 발급받기
import requests
import json
url = 'https://kauth.kakao.com/oauth/token'
rest_api_key = '자신의 REST API 키'
redirect_uri = 'https://example.com/oauth'
authorize_code = '-7sSp7Xxqw2QAew7-rctWJtZT4ycERTzQM_nylg8bX0OxFcgGegkA9jaVvPLEVOX_FrkxQo9dRoAAAF2qFCIsA'
data = {
'grant_type':'authorization_code',
'client_id':rest_api_key,
'redirect_uri':redirect_uri,
'code': authorize_code,
}
response = requests.post(url, data=data)
tokens = response.json()
print(tokens)
# json 저장
with open("kakao_code.json","w") as fp:
json.dump(tokens, fp)
2. 카카오 메시지 보내기
import requests
import json
with open("kakao_code.json","r") as fp:
tokens = json.load(fp)
url="https://kapi.kakao.com/v2/api/talk/memo/default/send"
# kapi.kakao.com/v2/api/talk/memo/default/send
headers={
"Authorization" : "Bearer " + tokens["access_token"]
}
data={
"template_object": json.dumps({
"object_type":"text",
"text":"Hello, world!",
"link":{
"web_url":"www.naver.com"
}
})
}
response = requests.post(url, headers=headers, data=data)
response.status_code
3. 카카오톡 500번 반복문으로 보내기
import requests
import json
숫자 = 1
with open("kakao_code.json","r") as fp:
tokens = json.load(fp)
url="https://kapi.kakao.com/v2/api/talk/memo/default/send"
# kapi.kakao.com/v2/api/talk/memo/default/send
headers={
"Authorization" : "Bearer " + tokens["access_token"]
}
for ii in range(500) :
data = {
"template_object": json.dumps({
"object_type": "text",
"text": '%d번째 너에 경고한다. 정신차려' % (숫자),
"link": {
"web_url": "www.naver.com"
}
})
}
response = requests.post(url, headers=headers, data=data)
response.status_code
숫자 +=1
4. 확진자 수 카카오 메시지 보내기 코드
import requests
import json
from bs4 import BeautifulSoup
중대본url = "http://ncov.mohw.go.kr/bdBoardList_Real.do?brdId=1&brdGubun=11&ncvContSeq=&contSeq=&board_id=&gubun="
covid = requests.get(중대본url)
soup = BeautifulSoup(covid.text, "html.parser")
print(soup)
### 3. 뷰리플 스프에서 원하는 정보만 골라오기
from pprint import pprint
tr정보 = soup.find_all("tr")
pprint(tr정보[25])
확진자 = tr정보[25].find_all('td')
print(확진자[2])
확진자 = str(확진자[2])
확진자 = 확진자.replace("<td>", "")
확진자 = 확진자.replace("</td>", "")
print(확진자)
from datetime import datetime
print(datetime.today().month, '월',datetime.today().day,
'일 확진자 : ', 확진자, '명 입니다.')
with open("kakao_code.json","r") as fp:
tokens = json.load(fp)
url="https://kapi.kakao.com/v2/api/talk/memo/default/send"
# kapi.kakao.com/v2/api/talk/memo/default/send
headers={
"Authorization" : "Bearer " + tokens["access_token"]
}
data={
"template_object": json.dumps({
"object_type":"text",
"text": '오늘 확진자 수 : %s 명이다.'%(확진자),
"link":{
"web_url":"www.naver.com"
}
})
}
response = requests.post(url, headers=headers, data=data)
response.status_code
5. 급식정보 카카오톡으로 보내기
import requests
import json
from bs4 import BeautifulSoup
import datetime # 현재 날짜 알아오는 패키지
import re
### 2. 오늘 날짜 가져오기
현재 = str(datetime.datetime.now())
print(현재)
오늘 = 현재[:4] + 현재[5:7] + 현재[8:10] # 데이터 슬라이스
print(오늘)
### 3. 급식정보 크롤링
급식정보 = requests.get("https://stu.sen.go.kr/sts_sci_md01_001.do?schulCode=B100000579&schulCrseScCode=4&schulKndScCode=04&schMmealScCode=2&schYmd="+오늘)
print(급식정보)
### 4. 뷰티플 스프에서 타겟 정보 얻기
스프 = BeautifulSoup(급식정보.text, "html.parser")
tr들 = 스프.find_all("tr")
#print(tr들)
타겟tr = tr들[2]
#print(타겟tr)
td들 = 타겟tr.find_all("td")
#print(td들[5])
요일 = datetime.datetime.today().weekday()
if 요일 == 0 : 타겟td = td들[1] #월
elif 요일 == 1 : 타겟td = td들[2] #화
elif 요일 == 2 : 타겟td = td들[3] #수
elif 요일 == 3 : 타겟td = td들[4] #목
elif 요일 == 4 : 타겟td = td들[5] #금
print(타겟td)
### 5. 타겟정보 데이터 클리닝
타겟td = str(타겟td)
타겟td = 타겟td.replace('<td class="textC">', '')
타겟td = 타겟td.replace('</td>', '')
타겟td = 타겟td.replace('<br/>', '\n')
타겟td = 타겟td.replace('.', '')
타겟td = re.sub(r"\d", "", 타겟td) # 숫자(\d) 제거
print(타겟td)
with open("kakao_code.json","r") as fp:
tokens = json.load(fp)
url="https://kapi.kakao.com/v2/api/talk/memo/default/send"
# kapi.kakao.com/v2/api/talk/memo/default/send
headers={
"Authorization" : "Bearer " + tokens["access_token"]
}
data={
"template_object": json.dumps({
"object_type":"text",
"text":"<오늘의 급식정보>\n%s"%(타겟td),
"link":{
"web_url":"www.naver.com"
}
})
}
response = requests.post(url, headers=headers, data=data)
response.status_code
6. 카카오톡 시간 예약 걸기
import requests
import json
from bs4 import BeautifulSoup
import datetime # 현재 날짜 알아오는 패키지
import re
import time
while(1) :
### 2. 오늘 날짜 가져오기
현재 = str(datetime.datetime.now())
print(현재)
오늘 = 현재[:4] + 현재[5:7] + 현재[8:10] # 데이터 슬라이스
#print(오늘)
시간 = 현재[11:13]
분 = 현재[14:16]
시간 = int(시간)
분 = int(분)
print(시간)
print(분)
### 3. 급식정보 크롤링
급식정보 = requests.get("https://stu.sen.go.kr/sts_sci_md01_001.do?schulCode=B100000579&schulCrseScCode=4&schulKndScCode=04&schMmealScCode=2&schYmd="+오늘)
#print(급식정보)
### 4. 뷰티플 스프에서 타겟 정보 얻기
스프 = BeautifulSoup(급식정보.text, "html.parser")
tr들 = 스프.find_all("tr")
#print(tr들)
타겟tr = tr들[2]
#print(타겟tr)
td들 = 타겟tr.find_all("td")
#print(td들[5])
요일 = datetime.datetime.today().weekday()
if 요일 == 0 : 타겟td = td들[1] #월
elif 요일 == 1 : 타겟td = td들[2] #화
elif 요일 == 2 : 타겟td = td들[3] #수
elif 요일 == 3 : 타겟td = td들[4] #목
elif 요일 == 4 : 타겟td = td들[5] #금
#print(타겟td)
### 5. 타겟정보 데이터 클리닝
타겟td = str(타겟td)
타겟td = 타겟td.replace('<td class="textC">', '')
타겟td = 타겟td.replace('</td>', '')
타겟td = 타겟td.replace('<br/>', '\n')
타겟td = 타겟td.replace('.', '')
타겟td = re.sub(r"\d", "", 타겟td) # 숫자(\d) 제거
#print(타겟td)
with open("kakao_code.json","r") as fp:
tokens = json.load(fp)
url="https://kapi.kakao.com/v2/api/talk/memo/default/send"
# kapi.kakao.com/v2/api/talk/memo/default/send
headers={
"Authorization" : "Bearer " + tokens["access_token"]
}
data={
"template_object": json.dumps({
"object_type":"text",
"text":"<오늘의 급식정보>\n%s"%(타겟td),
"link":{
"web_url":"www.naver.com"
}
})
}
if 시간 == 15 and 분 == 4 :
response = requests.post(url, headers=headers, data=data)
response.status_code
time.sleep(86000)
time.sleep(1)
'Python > 파이썬 프로젝트' 카테고리의 다른 글
tello 텔로 드론 비디오 스트리밍 받아오기 파이썬 코드 (0) | 2021.09.14 |
---|---|
Python Tello Drone 기본 동작 제어. (2) | 2021.09.07 |
[모듈 2-13] 파이썬 웹크롤링(급식정보 디스코드 봇 만들기) (3) | 2020.12.21 |
[모듈 2-12] 파이썬 매크로 기본 함수와 다양한 활용 예제 코드 (0) | 2020.11.26 |
[모듈 2-11] python 기반 스네이크 게임 만들기 (1) | 2020.11.13 |