오늘 어제에 비해 많은 것이 업데이트되었고, 배운 것도 있다.
우선 배운점
1) 크롤링에 대해 하는 법을 전혀 몰랐었는데, 단편적인 숫자 데이터만을 가져오는 건 매우 매우 쉽다.
- beautifulsoup4를 이용했고(대부분 크롤링할 때 이것을 이용하는 것 같더라), 확진자 수는 http://ncov.mohw.go.kr 에서 가져왔다.
코로나바이러스감염증-19(COVID-19)
코로나바이러스감염증-19 정식 홈페이지로 발생현황, 국내발생현황, 국외발생현황, 시도별발생현황, 대상별 유의사항, 생활 속 거리 두기, 공적마스크 공급현황, 피해지원정책, 홍보자료, FAQ, 관
ncov.mohw.go.kr
2) 생각보다 Slackbot 만드는 게 어렵지 않다는 점? 물론 Slacker라는 라이브러리를 써서 더 편해진 것도 있지만 말이다.
from urllib import request
from bs4 import BeautifulSoup
target = request.urlopen("http://ncov.mohw.go.kr/")
soup = BeautifulSoup(target, "html.parser")
nums = []
for item in soup.select("div.datalist"): // 해당 홈페이지에서 확진자수 정보가 개발자 도구를 통해 확인한 결과 datalist라는 div 내에 있었다
for data in item.select("span.data"): // span class의 data를 뽑아오기 위한 for문
data.string = data.string.replace(',', '') // 1,004명이었기 때문에 ,을 없애줘서 온전한 숫자로 바꿔줌
nums.append(int(data.string)) // data.string을 nums라는 리스트에 추가함. 국내발생 1,004명 해외유입 25명이었기 때문에 두 가지가 더해진 상황
print("오늘 코로나 확진자수는:",sum(nums),"명입니다") // sum(nums)에는 1,004명+25명 = 1,029명의 값이 저장되어 있다.
이 간단한 파이썬 파일을 실행하면
이렇게 오늘 발표된 어제 코로나 확진자수(2020/12/31 기준)를 크롤링해 온 것을 확인할 수 있다.
이제 파이썬으로 불러오는 건 끝났으니, Slackbot에 해당 data를 띄워야 한다.
from slacker import Slacker
from datetime import datetime
from urllib import request
from bs4 import BeautifulSoup
token='xoxb-' // 토큰은 가렸다.
def send_slack_message(msg):
full_msg = msg
slack = Slacker(token)
slack.chat.post_message('#bots-playground', full_msg, as_user=True)
def run():
target = request.urlopen("http://ncov.mohw.go.kr/")
soup = BeautifulSoup(target, "html.parser")
nums = []
for item in soup.select("div.datalist"):
for data in item.select("span.data"):
data.string = data.string.replace(',', '')
nums.append(int(data.string))
send_slack_message(f"오늘 발표된 어제 코로나 확진자수는: {sum(nums)}명입니다.")
if __name__ == "__main__":
try:
run()
except Exception as e:
send_slack_message(e)
Slackbot 만드는 게 오래 걸릴 거라고 생각하지 않긴 했지만, 오늘 일사천리로 진행이 됐다.
남은 건, crontab을 이용해서 특정한 때에(정오로 생각하고 있다.) 반복적으로 Slackbot이 말하게끔 하는 것
이다. 그 외에도 여러 종류가 있겠지만, 일단 여기까지! 오늘 남은 시간에는 crontab이 제대로 실행되지 않는 이유를 체크해볼 생각이다.
'Slackbot' 카테고리의 다른 글
1/5 오늘의 코로나 Slackbot 완성 (11) | 2021.01.05 |
---|---|
1/2 AWS EC2 인스턴스 만들고 GitHub에서 repository git clone하기 (0) | 2021.01.02 |
12/30 Slacker를 이용해서 bots-playground에 메시지 띄우기 (0) | 2020.12.30 |
12/29 SlackBot 추가하기 & import slack이 안 되는 오류 해결 (0) | 2020.12.29 |
개인 토이프로젝트 Slack API 앱 만들기 (0) | 2020.12.28 |