[PYTHON] Ich möchte Betriebsinformationen über die Yahoo-Route erhalten

Hintergrund

Ein bestimmter Twitter-Bot wurde erstellt, und es wurden ohnehin Informationen zum Zugbetrieb benötigt. Aufgrund verschiedener Überlegungen fragte ich mich, ob ich die Betriebsinformationen von ** nur bestimmten Routen ** kostenlos von irgendwoher abrufen könnte. Ich fand, dass das Abkratzen von der Yahoo-Route die beste Lösung war.

API und andere Sites, die den Betriebsstatus liefern

Nachdem verschiedene Dinge untersucht wurden, liefert es derzeit Informationen zum Routenbetrieb

  1. Json of Railway Delay Information (Im Json-Format werden die Strecken mit Verspätungen usw. summiert und zurückgegeben.)
  2. API nach dem Sender (Es sieht ausgezeichnet aus! Aber es gibt eine Gebühr)
  3. Betriebsstatus der Yahoo-Route (Die bekannteste, aber keine API !!!)

Wenn Sie dies kostenlos tun möchten, json of Eisenbahnverspätungsinformationen oder [Betriebsstatus der Yahoo-Route](https: // Transit). yahoo.co.jp/traininfo/top). Im ersteren Fall werden bundesweit verspätete Routeninformationen zurückgegeben. Danach werden die Informationen alle 10 Minuten aktualisiert ... Selbst 10 Minuten sind am Morgen tödlich.

Die letztere Yahoo-Zeile, ** Eigentlich ist der Inhalt nach der Station ** .... lol (Unerwartet unbekannt) Es gibt auch Betriebsinformationen für jede Route, und diese sind in Echtzeit genau und schnell! Dann *** Wenn Sie keine API haben, kratzen Sie sie! *** ***

Informationen zum Scraping-Vorgang der Yahoo-Route

Der Autor, der noch nie "su" geschabt hat, versucht zu schaben. Anscheinend wird ** "Schöne Suppe" ** verwendet ... Mal sehen, die wunderbare Suppe!

Was ist schöne Suppe? ??

BeautifulSoup ist eine Python-Bibliothek, die Daten aus HTML- und XML-Dateien abruft. Anscheinend können Sie ** mit einem Parser nach HTML-Elementen aus dem abgerufenen HTML suchen. Ich kenne die Details nicht, also probieren wir es gleich aus!

Lasst uns! Schaben!

Klicken Sie hier für die Seite, die Sie dieses Mal kratzen möchten! Betriebsstatus der Yahoo-Linie Tokaido-Linie Schauen wir uns zunächst das HTML der Seite an スクリーンショット 2019-12-14 11.46.02.png Wenn Sie sich den HTML-Code zum Zeitpunkt der Verzögerung ansehen, gibt es eine Fehlerklasse des dd-Tags

<div id="mdServiceStatus">
  <dl>
  <dt>
  <span class="icnAlertLarge">[!]</span>Zugverspätung</dt>
  <dd class="trouble">
   <p>Aufgrund des Einflusses der Inspektion innerhalb der Utsunomiya-Linie ist die Downline(Zu Atami)Einige Züge sind verspätet.<span>(Gepostet um 09:25 am 14. Dezember)</span></p>
 </dd>
 </dl>
</div><!--/#mdServiceStatus-->

Wenn Sie sich jedoch den normalen HTML-Code ansehen, gibt es eine normale Klasse für das dd-Tag.

<div class="elmServiceStatus">
    <dl>
    <dt><span class="icnNormalLarge">[○]</span>Normale Operation</dt>
    <dd class="normal">
        <p>Derzeit liegen keine Informationen zu Unfällen / Verspätungen vor.</p>
    </dd>
    </dl>
</div>

Mit anderen Worten Bei Verzögerung: ** Trouble Class DD Tag ** Normale Zeit: ** dd Tag der normalen Klasse **

** Anhand dieses dd-Tags scheint es möglich zu sein, festzustellen, ob es sich um einen verzögerten oder einen normalen Betrieb handelt! ** Lass es uns sofort tun!

Installation

Zuerst setzen Sie schöne Suppe mit Pip

$ pip install beautifulsoup4 

Code

import requests
from bs4 import BeautifulSoup

#URL des Betriebsstatus der Tokaido-Leitung
ToukaidouLine_URL = 'https://transit.yahoo.co.jp/traininfo/detail/27/0/'

#Holen Sie sich Webseiten mit Requests
ToukaidouLine_Requests = requests.get(ToukaidouLine_URL)

#Analysieren Sie Webseiten mit BeautifulSoup
ToukaidouLine_Soup = BeautifulSoup(ToukaidouLine_Requests.text, 'html.parser')

#.Finden Sie das Trouble Class DD-Tag mit find
if ToukaidouLine_Soup.find('dd',class_='trouble'):
    message = 'Tokaido-Linie ist verzögert'
else:
    message = 'Die Tokaido-Leitung ist normal'

print(message)

Ausführungsergebnis

Tokaido-Linie ist verzögert

Impressionen

Ist es nicht wirklich einfach? ?? Das Einbringen von Informationen von der Webseite ist ein wahr gewordener Traum! Spätere Geschichte: Als ich es Yahoo Leuten zeigte, war es ein Geheimnis, dass mir gesagt wurde: "Es ist eine Grauzone."

Recommended Posts

Ich möchte Betriebsinformationen über die Yahoo-Route erhalten
Ich habe versucht, die Standortinformationen des Odakyu-Busses zu erhalten
Keras Ich möchte die Ausgabe einer beliebigen Ebene erhalten !!
Ich möchte den Namen der ausgeführten Funktion / Methode erhalten
Ich möchte die Daten von League of Legends ③ erhalten
Ich möchte die Daten von League of Legends ② erhalten
Ich möchte das Erscheinungsbild von zabbix anpassen
Ich möchte League of Legends-Daten erhalten ①
Ich habe versucht, die Filminformationen der TMDb-API mit Python abzurufen
Ich möchte das Ausführungsergebnis von strace erfassen
Ich möchte die Grundlagen von Bokeh vollständig verstehen
Ich habe versucht, die Spacha-Informationen von VTuber zu visualisieren
Ich möchte die Sicherheit der SSH-Verbindung erhöhen
Ich möchte den Pfad des Verzeichnisses abrufen, in dem die laufende Datei gespeichert ist.
Ich möchte die Standortinformationen von GTFS Realtime auf Jupyter zeichnen! (Mit Ballon)
Ich möchte nur die SudachiPy-Normalisierungsverarbeitung verwenden
Ich möchte die Authentizität eines Elements eines numpy-Arrays bestimmen
Ich möchte die Natur von Python und Pip kennenlernen
Ich möchte die Legende der IT-Technologiewelt kennenlernen
Ich habe versucht, verschiedene Informationen von der Codeforces-API abzurufen
[Pytorch] Ich möchte die Trainingsparameter des Modells manuell zuweisen
Ich habe versucht, den Index der Liste mithilfe der Aufzählungsfunktion abzurufen
Ich möchte die HTML-Version der OpenCV 3.1-Version "OpenCV-Python Tutorials" lesen
LINEbot-Entwicklung möchte ich den Betrieb in der lokalen Umgebung überprüfen
Ich möchte die Position meines Gesichts mit OpenCV überprüfen!
Ich möchte die Bevölkerung jedes Landes der Welt kennenlernen.
PhytoMine-I hat versucht, mit Python die genetischen Informationen der Pflanze zu erhalten
Ich möchte Spyder an die Taskleiste anheften
Ich möchte kühl auf die Konsole ausgeben
Ich möchte mit dem Reim Teil1 umgehen
Ich möchte mit dem Reim part3 umgehen
Ich möchte den Fortschrittsbalken anzeigen
Ich möchte mit dem Reim part2 umgehen
Ich möchte mit dem Reim part5 umgehen
Ich möchte mit dem Reim part4 umgehen
Ich möchte Informationen von fstab am ssh-Verbindungsziel abrufen und den Befehl ausführen
Ich möchte Tag-Informationen (Titel und Künstler) einer Musikdatei (flac, wav) extrahieren.
Ich habe versucht, die Trefferergebnisse von Hachinai mithilfe der Bildverarbeitung zu erhalten
Ich möchte es nicht zugeben ... Die dynamische Systemdarstellung von Neural Network
Ich habe 6 Methoden gemessen, um den Index des Maximalwerts (Minimalwerts) der Liste zu erhalten
Ich möchte das Ergebnis von "Zeichenfolge" .split () in Python stapelweise konvertieren
Ich möchte die abstrakte Klasse (ABCmeta) von Python im Detail erklären
Ich habe versucht, den Authentifizierungscode der Qiita-API mit Python abzurufen.
Ich möchte eine Liste in der Reihenfolge anderer Listen sortieren
Ich möchte meine Gefühle mit den Texten von Mr. Children ausdrücken
Ich möchte die Gefühle von Menschen analysieren, die sich treffen und zittern wollen
Ich möchte den Erfolg von NBA-Spielern mit dem Qore SDK vorhersagen
Ich möchte einen beliebigen Befehl im Befehlsverlauf von Shell belassen
Ich habe versucht, das RSS des Top-Songs des iTunes Store automatisch abzurufen
Ich möchte das automatische Löschen des tmp-Bereichs in RHEL7 stoppen
Python: Ich möchte die Verarbeitungszeit einer Funktion genau messen
[Für Anfänger] Ich möchte den Index eines Elements erhalten, das einen bestimmten bedingten Ausdruck erfüllt
[Python] Holen Sie sich die Hauptthemen von Yahoo News
Lassen Sie uns Wiki-Informationen mithilfe der MediaWiki-API abrufen
Ich möchte mit dem Reim part7 (BOW) umgehen
Ich möchte DB-Informationen in einer Liste speichern
Ich habe versucht, die Trapezform des Bildes zu korrigieren