[PYTHON] Web Scraping für Wetterwarnbenachrichtigungen.

Bitte lassen Sie mich die Warnung auf Twitter wissen.

Motivation

Ich habs gemacht

Ich bin ein Schüler. Die Schule wird wegen eines Alarms geschlossen. Die glaubwürdige Zeit, um die Warnungen nacheinander bei dieser schlecht reagierenden NHK-Datenübertragung zu überprüfen, ist zu aufregend. Ich möchte, dass Sie automatisch auf Twitter benachrichtigt werden. Ja.

Problem

Es gibt überhaupt keine Alarm-API. Ich habe es gefunden, als ich danach gesucht habe, aber anscheinend verwende ich ein sprudelndes Protokoll wie "Habusabu Pab Bab", was für mich unmöglich ist.

...

Web Scraping !!

Das ist es !!

Umgebung

Es fühlt sich so an.

Sojasauce

# 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='Oh dein', consumer_secret='Geheimnis', access_token_secret='Ich werde es hier setzen')

#URL für den Zugriff
url = "https://typhoon.yahoo.co.jp/weather/jp/warn/etwas/Nummer/"


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")#Alarmbenachrichtigung
    adv = Li.find("span", class_="icoWarning")  #Beachten
    if adv:
        # Yes
        # print("OK")
        return 1
    else:
        # No
        # print("NO")
        return 0


def Twit(state):
    nowtime = datetime.now()
    NowStr = str(nowtime.hour) + "Zeit" + str(nowtime.minute) + "Minuten jetzt"
    Txt = ""
    if state:
        Txt = "\n Es scheint, dass irgendwie ein Alarm an die Stadt ausgegeben wurde. .. ..\n Ich bin nicht glücklich, weil ich in den Schulferien bin! !!"
    else:
        Txt = "\n Es scheint, dass es in der Stadt irgendwie keine Warnung gibt.\n Stoppen Sie das seltsame Pech und gehen Sie schnell zur Schule."
    status = api.PostUpdate("[Automatisches Benachrichtigungssystem für Wetterwarnungen]\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!")

        #Lesen
        html = request.urlopen(url).read()

        soup = BeautifulSoup(html, "html.parser")
        Twit(Getter(soup))
        if Getter(soup):
            #Mit einem Alarm
            print(Coloring("!!!!WARNING!!!!", "31"))
        else:
            #Bekomme keinen Alarm
            print(Coloring("ALLGREEN", "32"))
        time.sleep(60 * 3)


if __name__ == "__main__":
    main()

Ergebnis

Screenshot_20170723_003600Edited.png

Ich kann es schaffen

Gute Stimmung.

Verbesserungspunkte

Verbinden Sie dies mit Razpai, um das Haus zu sperren, wenn ein Alarm ausgegeben wird www

Recommended Posts

Web Scraping für Wetterwarnbenachrichtigungen.
Web Scraping für Anfänger in Python (1)
Web Scraping für Anfänger in Python (4) -1
Web Scraping
WEB-Scraping mit Python (für persönliche Notizen)
[Für Anfänger] Versuchen Sie Web Scraping mit Python
Web Scraping (Prototyp)
Web Scraping mit Python (Wettervorhersage)
Web Scraping für Anfänger in Python (1) Verbesserte Version
Datenanalyse zur Verbesserung von POG 1 ~ Web Scraping mit Python ~
Erste Schritte mit Web Scraping
Web-Scraping für Anfänger mit Python (4) --2 Scraping auf Cloud Shell
Web Scraping mit Python + JupyterLab
Speichern Sie Bilder mit Web Scraping
WEB-Scraping-Technologie und Bedenken
Kompromisse beim Web Scraping & Crawlen
Web Scraping mit Selenium (Python)
Kratzwettervorhersage mit Python
Web Scraping mit AWS Lambda
Über die Warnung "Kompiliert für ~" von mod_wsgi
[Python + Selen] Tipps zum Scraping
Web Scraping Anfänger mit Python
Web-Scraping-Bibliothek mit Algorithmen Scrapely
Einzeiliges Web-Scraping mit tse
Studieren von Web Scraping zum Extrahieren von Daten aus Filmarks # 2