[Python] J'ai essayé de laisser LINE BOT répondre aux prévisions météo

introduction

J'ai gratté tenki.jp et incorporé les prévisions météorologiques dans le linebot. https://tenki.jp/

environnement

windows python 3.6.4

Dessin terminé en premier

IMG_3332.jpg

Tout d'abord, préparez-vous au grattage

    #URL du site cible
    url = "https://tenki.jp/forecast/6/30/6200/27100/"
    #Création d'instance
    res = urllib.request.urlopen(url)
    soup = BeautifulSoup(res, 'html.parser')

«html.parser» est comme un filtre nécessaire au grattage.

Grattage par classe

weather = soup.find_all("p", class_="weather-telop")
    temp = soup.find_all("dd", class_="high-temp temp")
    low_temp = soup.find_all("dd", class_="low-temp temp")
    tds = soup.select("tr.rain-probability td")
    hini = soup.find_all("h3", class_="left-style")

Du haut, le grattage se fait dans l'ordre "météo, température, température minimale, probabilité de précipitations, date". J'ai besoin de m'habituer à utiliser correctement find_all et select, mais je pensais qu'il n'y aurait pas de problème si je n'utilisais que select.

En préparation pour la sortie

    tenki = hini[0].getText() + "\n\n" + weather[0].getText()
    kion = "\n meilleur" + temp[0].getText()
    low_kion = "Le minimum" + low_temp[0].getText()
    rain1 = "\n\n Probabilité de précipitation\n00-06:00" + tds[0].getText()
    rain2 = "\n06-12 heure" + tds[1].getText()
    rain3 = "\n12-18h00" + tds[2].getText()
    rain4 = "\n18-24h00" + tds[3].getText()

Tous les éléments récupérés seront acquis sous forme de liste. Cette fois, fondamentalement, le contenu de [0] était les données d'aujourd'hui, et le contenu de [1] était les données de demain, donc c'était relativement facile.

Vue d'ensemble

import urllib.request
from bs4 import BeautifulSoup

def getw():
    #URL du site cible
    url = "https://tenki.jp/forecast/6/30/6200/27100/"
    #Création d'instance
    res = urllib.request.urlopen(url)
    soup = BeautifulSoup(res, 'html.parser')
    #Élément cible
    #La météo d'aujourd'hui
    weather = soup.find_all("p", class_="weather-telop")
    temp = soup.find_all("dd", class_="high-temp temp")
    low_temp = soup.find_all("dd", class_="low-temp temp")
    tds = soup.select("tr.rain-probability td")
    hini = soup.find_all("h3", class_="left-style")


    tenki = hini[0].getText() + "\n\n" + weather[0].getText()
    kion = "\n meilleur" + temp[0].getText()
    low_kion = "Le minimum" + low_temp[0].getText()
    rain1 = "\n\n Probabilité de précipitation\n00-06:00" + tds[0].getText()
    rain2 = "\n06-12 heure" + tds[1].getText()
    rain3 = "\n12-18h00" + tds[2].getText()
    rain4 = "\n18-24h00" + tds[3].getText()

    
    a = tenki+kion+low_kion+rain1+rain2+rain3+rain4
    return a

Après cela, chargez cette fonction dans main.py de linebot.

text_in = event.message.text

    if "aujourd'hui" in text_in:
        line_bot_api.reply_message(event.reply_token,TextSendMessage(text=scw.getw()))

Lorsque l'utilisateur entre un caractère contenant le mot «aujourd'hui», la météo du jour s'affiche. Puis déployez et terminez! IMG_3332.jpg

finalement

Je devrais être capable d'écrire plus intelligemment, alors je vais laisser cela comme un problème ensuite. De plus, comme c'est un BOT qui n'est pas du tout intéressant, il y a beaucoup de choses qui peuvent être faites, comme l'ajout d'arrangements tels que "Avez-vous un parapluie?" S'il pleut, laissons cela comme la prochaine tâche.

Cela n'a pas d'importance du tout, mais j'ai mal au dos.

Recommended Posts

[Python] J'ai essayé de laisser LINE BOT répondre aux prévisions météo
Je veux connaître la météo avec LINE bot avec Heroku + Python
Je souhaite envoyer un message de Python à LINE Bot
Tweet la météo avec bot
Tweet les prévisions météo avec le bot Partie 2
[Python] Je vais télécharger FTP sur le serveur FTP.
Je veux afficher la progression en Python!
Je veux obtenir le nom du fichier, le numéro de ligne et le nom de la fonction dans Python 3.4
J'ai essayé d'envoyer automatiquement la littérature du nouveau virus corona à LINE avec Python
J'ai essayé de représenter graphiquement les packages installés en Python
[Python] Essayez de lire la bonne réponse au problème FizzBuzz
J'ai essayé de toucher un fichier CSV avec Python
J'ai essayé de résoudre Soma Cube avec python
Je voulais utiliser la bibliothèque Python de MATLAB
Je veux hériter de l'arrière avec la classe de données python
J'ai essayé de faire LINE BOT avec Python et Heroku
[Python] J'ai essayé de représenter graphiquement le top 10 des ombres à paupières
Je veux écrire en Python! (3) Utiliser des simulacres
J'ai essayé de résoudre le problème avec Python Vol.1
J'ai senti que j'avais porté le code Python en C ++ 98.
Le robot en ligne le plus simple au monde pour perdre du poids
Je veux utiliser le jeu de données R avec python
J'ai essayé de résumer les opérations de chaîne de Python
Ajouter une fonction pour indiquer la météo d'aujourd'hui au bot slack (fabriqué par python)
J'ai essayé de trouver l'entropie de l'image avec python
Je veux initialiser si la valeur est vide (python)
J'ai essayé de simuler la propagation de l'infection avec Python
[Partie 1] Utilisez le Deep Learning pour prévoir la météo à partir d'images météorologiques
[Partie 3] Utilisez le Deep Learning pour prévoir la météo à partir d'images météorologiques
Je souhaite enregistrer les photos envoyées par LINE vers S3
J'ai essayé de notifier les informations de retard de train avec LINE Notify
maya Python Je veux réparer à nouveau l'animation cuite.
Ce que j'ai fait pour accueillir le Python2 EOL en toute confiance
J'ai essayé d'afficher l'heure et la météo d'aujourd'hui w
[Python] J'ai essayé de visualiser la relation de suivi de Twitter
[Partie 2] Utilisez le Deep Learning pour prévoir la météo à partir d'images météorologiques
Je ne savais pas comment utiliser l'instruction [python] for
Scraping prévisions météorologiques avec python
J'ai essayé d'implémenter la fonction d'envoi de courrier en Python
Je veux connaître la nature de Python et pip
J'ai essayé d'énumérer les différences entre java et python
J'ai essayé de changer le script python de 2.7.11 à 3.6.0 sur Windows10
J'ai téléchargé la source python
Comment créer un LINE BOT 004 interactif (répondre à la date de clôture d'une société cotée)
J'ai essayé de faire mon propre BOT lycéenne avec le style Rinna avec LINE BOT (Python & Heroku)
J'ai essayé de résumer le contenu de chaque paquet enregistré par Python pip en une seule ligne
[Python] J'ai essayé de créer un programme simple qui fonctionne sur la ligne de commande en utilisant argparse
Partie 1 J'ai écrit la réponse au problème de référence de l'écriture hors ligne en temps réel en Python
J'ai essayé de résoudre l'édition du débutant du livre des fourmis avec python
[Introduction à Python] J'ai comparé les conventions de nommage de C # et Python.
Je veux sortir le début du mois prochain avec Python
Je veux exécuter l'interface graphique Python au démarrage de Raspberry Pi
J'ai écrit le code pour écrire le code Brainf * ck en python
J'ai essayé d'afficher le temps de lecture de la vidéo (OpenCV: version Python)
Je voulais résoudre le problème ABC164 A ~ D avec Python
[Introduction] Je veux créer un robot Mastodon avec Python! 【Débutants】