Ich habe tenki.jp abgekratzt und die Wettervorhersage in den Linebot aufgenommen. https://tenki.jp/
windows python 3.6.4
#URL der Zielwebsite
url = "https://tenki.jp/forecast/6/30/6200/27100/"
#Instanzerstellung
res = urllib.request.urlopen(url)
soup = BeautifulSoup(res, 'html.parser')
'html.parser' ist wie ein Filter, der zum Scraping benötigt wird.
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")
Von oben erfolgt das Schaben in der Reihenfolge "Wetter, Temperatur, Mindesttemperatur, Niederschlagswahrscheinlichkeit, Datum". Ich muss mich daran gewöhnen, find_all und select-Methoden richtig zu verwenden, aber ich dachte, dass es kein Problem geben würde, wenn ich nur select verwenden würde.
tenki = hini[0].getText() + "\n\n" + weather[0].getText()
kion = "\n am besten" + temp[0].getText()
low_kion = "Minimum" + low_temp[0].getText()
rain1 = "\n\n Niederschlagswahrscheinlichkeit\n00-06:00" + tds[0].getText()
rain2 = "\n06-12 Uhr" + tds[1].getText()
rain3 = "\n12-18:00" + tds[2].getText()
rain4 = "\n18-24:00" + tds[3].getText()
Alle abgekratzten Gegenstände werden als Liste erfasst. Diesmal waren im Grunde genommen die Inhalte von [0] die Daten von heute und die Inhalte von [1] die Daten von morgen, so dass es relativ einfach war.
import urllib.request
from bs4 import BeautifulSoup
def getw():
#URL der Zielwebsite
url = "https://tenki.jp/forecast/6/30/6200/27100/"
#Instanzerstellung
res = urllib.request.urlopen(url)
soup = BeautifulSoup(res, 'html.parser')
#Zielelement
#das heutige Wetter
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 am besten" + temp[0].getText()
low_kion = "Minimum" + low_temp[0].getText()
rain1 = "\n\n Niederschlagswahrscheinlichkeit\n00-06:00" + tds[0].getText()
rain2 = "\n06-12 Uhr" + tds[1].getText()
rain3 = "\n12-18:00" + tds[2].getText()
rain4 = "\n18-24:00" + tds[3].getText()
a = tenki+kion+low_kion+rain1+rain2+rain3+rain4
return a
Laden Sie danach diese Funktion in die Datei main.py von linebot.
text_in = event.message.text
if "heute" in text_in:
line_bot_api.reply_message(event.reply_token,TextSendMessage(text=scw.getw()))
Wenn der Benutzer ein Zeichen eingibt, das das Wort "heute" enthält, wird das heutige Wetter angezeigt. Dann bereitstellen und abschließen!
Ich sollte in der Lage sein, klüger zu schreiben, also werde ich es als nächstes als Problem belassen. Da es sich um einen BOT handelt, der überhaupt nicht interessant ist, können viele Dinge getan werden, z. B. das Hinzufügen von Arrangements wie "Haben Sie einen Regenschirm?". Wenn es regnet, lassen wir dies als nächste Aufgabe.
Es spielt überhaupt keine Rolle, aber mein Rücken tut weh.
Recommended Posts