인터넷을 통해 기상 경보 알림을 스캔하다.

트위터에 경보 알려주세요.


동기


갑자기


고등학생입니다.
학교는 경보 때문에 방학한다.
반응이 좋지 않은 NHK 데이터 방송에서 경보를 하나하나 확인하는 경건한 시간이 너무 빡빡하기 때문에 반드시 트위터에 자동으로 알려주길 바란다.예.

문제


경고 API가 전혀 없는 것 같습니다.
찾아보았지만 "뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌뿌
...

웹 스캔!!


바로 이거!!

환경

  • Python3
  • urllib
  • BeatifulSoup4
  • twitter(Python 라이브러리)
  • 이런 느낌.

    이당

    # coding: UTF-8
    #!/usr/bin/env python3
    
    from urllib import request
    from bs4 import BeautifulSoup
    from datetime import datetime
    import time
    import twitter
    
    OK = '33[92m'
    WARN = '33[93m'
    NG = '33[91m'
    END_CODE = '33[0m'
    
    api = twitter.Api(consumer_key='あ、あなたの', consumer_secret='秘密を', access_token_secret='こ、ここに入れるのよ')
    
    # アクセスするURL
    url = "https://typhoon.yahoo.co.jp/weather/jp/warn/なんか/番号/"
    
    
    def Getter(soup):
        Summaryarea = soup.findAll("div", class_="warnSummary_box")
        # print(Summaryarea[0].dl)
        Li = Summaryarea[0].dl.dd.ul.li
        # adv = Li.find("span",class_="icoAdvisory")#警報知らせ
        adv = Li.find("span", class_="icoWarning")  # 注意報知らせ
        if adv:
            # Yes
            # print("OK")
            return 1
        else:
            # No
            # print("NO")
            return 0
    
    
    def Twit(state):
        nowtime = datetime.now()
        NowStr = str(nowtime.hour) + "時" + str(nowtime.minute) + "分現在"
        Txt = ""
        if state:
            Txt = "\nなんとか市に警報が発令されてるみたい。。。\nべっ別に学校休みだからって喜んだりしないんだからねっ!!"
        else:
            Txt = "\nなんとか市には警報出てないみたいね。\n変な悪あがきはやめてさっさと学校に行くことね。"
        status = api.PostUpdate("[気象警報自動通知システム]\n" + NowStr + Txt)
        print(status.text)
    
    
    def Coloring(txt, code):
        return "\033[%sm%s\033[0m" % (code, txt)
    
    
    def main():
        while 1:
            print("Now " + ntStr)
            print("Its time!")
    
            # 読み込み
            html = request.urlopen(url).read()
    
            soup = BeautifulSoup(html, "html.parser")
            Twit(Getter(soup))
            if Getter(soup):
                # 警報でてら
                print(Coloring("!!!!WARNING!!!!", "31"))
            else:
                # 警報でとらん
                print(Coloring("ALLGREEN", "32"))
            time.sleep(60 * 3)
    
    
    if __name__ == "__main__":
        main()
    
    미안합니다.
    사이트 주소는 Yahoo 날씨 경보 페이지입니다.

    결과



    삭제합니다.
    느낌이 좋다.

    개선점


    이것을 라즈파와 연합해서 경보가 울리면 집 열쇠를 닫아라

    좋은 웹페이지 즐겨찾기