【Python × Zapier】 경보 정보를 취득하고 Slack으로 통지
하고 싶은 일(BEFORE)
기상청의 경보 정보를 취득하여 지정하는 지역에 경보가 나오면 Slack으로 통지한다
이 기사 하고 싶은 것 돈피샤다!
라고 생각 기사대로 진행하고 있었습니다만, 기상청의 데이터가 갱신될 때마다 Zapier (작업을 자동화할 수 있는 툴)의 태스크를 움직이고 있으면 자신의 계획 .
그래서 하고 싶은 것의 범위를 좁혔습니다.
하고 싶은 것(AFTER)
기상청의 경보 정보를 「매일 7시」에 취득하여 지정하는 지역에 경보가 나오면 Slack으로 통지한다
▼이런 느낌(이동했을 때에 경보가 나오지 않았기 때문에 대신에 주의보를 취득한 모습)
매일 아침 7시에 1회만 정보를 취득해 태스크 실행 횟수를 1회/일로 했습니다.
Zap 전체도
파이썬 코드
하고 싶은 것이 약간 바뀌었기 때문에 공부하지 않으면...라고 생각 스크레이핑의 방법을 조사해 썼습니다. 첫 파이썬!
조사하고 있으면 아무래도 BeautifulSoup라고 하는 것을 사용하는지~라고 하는 것을 알았습니다만 Zapier 도움말 에 이런 것이 써 있었습니다.
오 "오오오온 BeautifulSoup을 사용할 수 없다!
라고 하는 것으로 무리 화살감 있습니다만 BeautifulSoup 사용하지 않고 원하는 부분(경보 부분)만 추출합니다.
import re
import requests
import time
code_list = [['札幌市', '0110000'], ['仙台市東部', '0410001'], ['さいたま市', '1110000']]
output = {'text': ''}
for code in code_list:
html = requests.get('https://www.jma.go.jp/jp/warn/f_' + code[1] + '.html').text
data_list = re.findall('<span style="color:#FF2800">(.*?)</span>', html)
if len(data_list) == 0:
continue
text = '【' + code[0] + '】'
i = 1
for data in data_list:
if i == len(data_list):
text += data
else:
data = re.sub('警報', '', data)
text += data + ','
i += 1
output['text'] += text + '\n'
time.sleep(1)
각 지역의 페이지에서 경보 부분의 폰트 칼라는
#FF2800
이므로, <span style="color:#FF2800">〜</span>
로 둘러싸인 부분을 모두 추출하고 있습니다.또, 복수 페이지를 스크래핑 하므로
time.sleep(1)
로 1초 쉬게 합니다.참고
기상청으로부터 정보를 취득하여 도쿄 23구의 기상 경보를 Slack에 통지
Zapier의 사용법도 포함해 매우 참고로 했습니다.
Reference
이 문제에 관하여(【Python × Zapier】 경보 정보를 취득하고 Slack으로 통지), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/rntkym/items/d7daecb0d488d7211140텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)