Un certain robot Twitter a été créé et des informations sur l'exploitation des trains étaient de toute façon nécessaires. À la suite de diverses réflexions, je me suis demandé si je pouvais extraire les informations de fonctionnement de ** uniquement des routes spécifiques ** gratuitement de quelque part. J'ai trouvé que le grattage de la route Yahoo était la meilleure solution.
Après avoir recherché diverses choses, il fournit actuellement des informations sur le fonctionnement de l'itinéraire
Après tout, si vous voulez le faire gratuitement, json d'informations sur les retards ferroviaires ou [état de fonctionnement de l'itinéraire yahoo](https: // transit. yahoo.co.jp/traininfo/top). Dans le premier cas, les informations d'itinéraire différées à l'échelle nationale sont renvoyées. Après cela, les informations sont mises à jour toutes les 10 minutes ... Même 10 minutes sont fatales dans la course du matin.
La dernière ligne yahoo, ** En fait, le contenu est après la station ** .... lol (inconnu de manière inattendue) Il y a aussi des informations de fonctionnement pour chaque itinéraire, et elles sont précises et rapides en temps réel! Puis *** Si vous n'avez pas d'API, grattez-la! *** ***
L'auteur, qui n'a jamais fait de grattage "su", essaie de gratter. Apparemment, ** "Beautiful Soup" ** est utilisé ... Voyons la merveilleuse soupe!
BeautifulSoup est une bibliothèque Python qui récupère des données à partir de fichiers HTML et XML. Apparemment, vous pouvez ** rechercher des éléments HTML à partir du HTML récupéré à l'aide d'un analyseur syntaxique. Je ne connais pas les détails, alors essayons-le tout de suite!
Cliquez ici pour le site que vous voulez gratter cette fois! État de fonctionnement de la ligne Tokaido de la ligne yahoo Tout d'abord, jetons un œil au html de la page En regardant le HTML au moment du retard, il y a une classe de problème de la balise dd
<div id="mdServiceStatus">
<dl>
<dt>
<span class="icnAlertLarge">[!]</span>Retard de train</dt>
<dd class="trouble">
<p>En raison de l'influence de l'inspection à l'intérieur de la ligne Utsunomiya, la ligne descendante(À Atami)Certains trains sont retardés.<span>(Posté à 09:25 le 14 décembre)</span></p>
</dd>
</dl>
</div><!--/#mdServiceStatus-->
D'un autre côté, si vous regardez dans le HTML normal, il existe une classe normale pour la balise dd.
<div class="elmServiceStatus">
<dl>
<dt><span class="icnNormalLarge">[○]</span>Fonctionnement normal</dt>
<dd class="normal">
<p>Actuellement, il n'y a aucune information concernant les accidents / retards.</p>
</dd>
</dl>
</div>
En d'autres termes Sur délai: ** balise dd de classe de problème ** Heure normale: ** balise dd de classe normale **
** Sur la base de cette balise dd, il semble possible de déterminer s'il s'agit d'un fonctionnement retardé ou normal! ** Faisons-le tout de suite!
Tout d'abord, mettez Beautiful Soup avec pip
$ pip install beautifulsoup4
import requests
from bs4 import BeautifulSoup
#URL de l'état de fonctionnement de la ligne Tokaido
ToukaidouLine_URL = 'https://transit.yahoo.co.jp/traininfo/detail/27/0/'
#Obtenir des pages Web à l'aide de requêtes
ToukaidouLine_Requests = requests.get(ToukaidouLine_URL)
#Analysez les pages Web avec BeautifulSoup
ToukaidouLine_Soup = BeautifulSoup(ToukaidouLine_Requests.text, 'html.parser')
#.Trouvez la balise dd de classe de problème avec find
if ToukaidouLine_Soup.find('dd',class_='trouble'):
message = 'La ligne Tokaido est retardée'
else:
message = 'La ligne Tokaido est en fonctionnement normal'
print(message)
Résultat d'exécution
La ligne Tokaido est retardée
N'est-ce pas vraiment facile? ?? Apporter des informations à partir de la page Web est un rêve devenu réalité! Histoire ultérieure: quand je l'ai montré à Yahoo, c'était un secret qu'on m'a dit "C'est une zone grise"
Recommended Posts