티스토리 뷰
「오늘은 네이버 코로나 현황을 크롤링해서 IFTTT를 통해 해당 내용을 메시지로 보내보는 것을 해보겠습니다.」
과정:
- 네이버의 코로나 현황 크롤링해 데이터 분류하기
- ITFFF사이트의 서비스 사용하기
- 위의 두 과정을 연결시키기
1. 네이버의 코로나 현황 크롤링해 데이터 분류하기
자 이제 크롤링을 해봅시다!
F12를 눌러 확인해보면 <div class="state_graph"> 밑에
먼저 크롤링 코드는 아래와 같습니다.
import requests
from bs4 import BeautifulSoup
from datetime import datetime
day_month = datetime.today().month
day_day = datetime.today().day
data = []
CoronaData = []
datasets = []
url='https://search.naver.com/search.naver?sm=top_hty&fbm=1&ie=utf8&query=%EC%BD%94%EB%A1%9C%EB%82%98+%ED%98%84%ED%99%A9'
hdr = {'Accept-Language': 'ko_KR,en;q=0.8', 'User-Agent': ('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.116 Safari/537.36')}
req = requests.get(url, headers=hdr)
html = req.text
soup = BeautifulSoup(html, 'html.parser')
for i in soup.select('div[class=status_info]'):
data.append(i.text)
CoronaData = str(data).split(" ")
patient = CoronaData[4] #총 확진자
Check = CoronaData[9] #검사중
Release = CoronaData[14] #격리해제
dead = CoronaData[19] #사망자
print(patient,Check,Release,dead)
url1 = "https://maker.ifttt.com/trigger/Corona_Check/with/key/여러분의 url"
r = requests.post(url1, data={"value1": "총 확진자:" + patient, "value2": "총 사망자:" + dead, "value3": "날짜 : " +str(day_month)+"월 " + str(day_day) + "일"})
#위 코드의 3,5,6번 줄은 datatime으로 현재의 날짜를 받아오는 역할입니다.
출력 결과입니다.
2.ITFFF사이트의 서비스 사용하기
그다음 나오는 파란색 네모(Receive a Web request)를 클릭하면
요런 창이 나오는데, 말 그대로 이벤트 이름입니다. 아무렇게나 정해주세요, 저는 Corona_Check라고 입력했습니다.
다음 That을 클릭한 다음 메시지를 보내야 하니 Android SMS를 클릭해 주세요.
클릭한 후에 send an SMS라는 초록색 네모를 클릭해 주세요.
클릭하면
요런 창이 뜨는 것을 확인하실 수 있습니다.
Phone Number에는 말 그대로 메시지를 전송할 대상의 핸드폰 번호를 입력해 주시면 됩니다. ex) 전화번호가 010-1234-567 이면 82101234567을 입력해주셔야 합니다.(한국 기준)
Message에는 받을 메시지의 형식을 입력해 줘야 하는데, 총 확진환자수, 사망자수, 날짜를 메시지로 보낼 것이므로, Message를 모두 지우고 Add ingredient에서 value1, value2, value3을 추가해 줍니다.
그다음 Create action을 클릭한 후에 Finish까지 누르면 비로소 완성입니다!
3. 위의 두 과정을 연결시키기
https://ifttt.com/maker_webhooks를 접속합니다.
우측 상단의 Documentation을 클릭합니다.
아까 설정한 Event Name을 사진의 "아까 설정한 Event Name"와 같은 위치인 창에 입력하고 Value1, Value2, Value 3에는 원하는 텍스트를 입력해보세요.
위 작업이 모두 끝나면 아래의 Test it(파란색 버튼)을 클릭해 보세요! 문자가 해당 전화번호로 전송된 것을 확인하실 수 있습니다.
3 - 2. 코드 작업
1번에서 작성한 코드와 애플릿을 활용하는 코드를 합쳐봅시다!
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
32
33
34
35
|
import requests
import requests
from bs4 import BeautifulSoup
from datetime import datetime
day_month = datetime.today().month
day_day = datetime.today().day
data = []
url='https://search.naver.com/search.naver?sm=top_hty&fbm=1&ie=utf8&query=%EC%BD%94%EB%A1%9C%EB%82%98+%ED%98%84%ED%99%A9'
hdr = {'Accept-Language': 'ko_KR,en;q=0.8', 'User-Agent': ('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.116 Safari/537.36')}
req = requests.get(url, headers=hdr)
html = req.text
soup = BeautifulSoup(html, 'html.parser')
for i in soup.select('div[class=state_graph]'):
data.append(i.text)
datasets = data[0]
datasets = datasets.split(" ",10)
datasets = datasets[1:]
datasets = datasets[:-1]
for i in range(0,4):
datasets[i] = datasets[i].replace(" ","")
datasets.append(day_month)
datasets.append(day_day)
print(datasets)
patient = datasets[0]
dead = datasets[3]
dayday = datasets[5]
month = datasets[4]
url1 = "https://maker.ifttt.com/trigger/Corona_Check/with/key/여러분의url"
r = requests.post(url1, data={"value1": patient, "value2": dead, "value3": "날짜 : " +str(month)+"월 " + str(dayday) + "일"})
|
cs |
*위 코드의 url1은 아래 사진의 마지막 https:// ~~7 부분으로 바꿔주셔야 합니다!*
실행결과:
하루가 다르게 느는 환자수를 보니 마음이 아프네요 ㅠ
하루빨리 이 사태가 종결되었으면 좋겠습니다.
※해당 사이트의 robots.txt를 찾아보면
User-agent: * Disallow: /search
이므로 이 포스팅은 공부 참고용으로만 사용해주시기를 권장합니다! ※
'프로그래밍 > 프로젝트' 카테고리의 다른 글
[APi프로젝트] 구글 클래스룸API 활용 서비스 개발 (0) | 2021.02.27 |
---|---|
[Python] webdriver으로 네이버 지도 가져오기 (0) | 2020.03.09 |
[Python] 책정보를 가져와 이메일로 보내주기 (0) | 2020.03.07 |
[python] Tacotron 간단 구현 후기 (2) | 2020.02.16 |
- Total
- Today
- Yesterday
- django
- 2022.02.05
- 1254
- JavaScript
- 1253
- 사칙연산
- Anaconda
- promise반환
- 1252
- 코드업
- 아나콘다
- 1255
- 티처블 머신
- Codeup
- 바닐라 javascript
- 컨트롤타임
- pygame
- 1251
- Python
- 타이탄의도구들
- 문제풀이
- 도전
- 바닐라 js
- 꿈두레
- SMTP
- 크롤링
- localstorage
- 주석
- notion api
- 코드설명
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |