Ich möchte die benutzerdefinierte Wettererfassung für Präfekturen / Regionen implementieren, die in der vorherigen Zusammenfassung beschrieben wurde. Ich habe es geschafft, weil ich dachte.
--Pythons Web-Scraping-Bibliothek, die Daten aus HTML- und XML-Dateien abruft und analysiert.
import requests
from bs4 import BeautifulSoup
#Holen Sie sich die verknüpfte HTML-Quelle
html = requests.get("http://www.google.com")
soup = BeautifulSoup(html.text, "html.parser")
#Holen Sie sich das erste Titel-Tag und geben Sie jedes Tag aus
print(soup.find("title"))
#Holen Sie sich das erste Titel-Tag und geben Sie nur das Element aus
print(soup.title.string)
<title>Google</title>
Google
`` rel
" ,
`Href``` usw. werden Attribute genannt.Formatieren Sie die vorherige Quelle für diese Quelle.
import requests
#von bs4 importieren Schöne Suppe hinzufügen
class GetWeather:
url = "http://weather.livedoor.com/forecast/webservice/json/v1?"
#URL der nationalen Standortdefinitionstabelle (RSS) für den Wetterdienst hinzugefügt(Web-Scraping-Ziel)
# http://weather.livedoor.com/forecast/rss/primary_area.xml
def getWeather(self, citycode): #Argument Stadtcode entfernen
query_params = {"city": citycode} #Ändern Sie den variablen Stadtcode in eine Klassenvariable
self.data = requests.get(self.url, params = query_params).json()
def showWeather(self):
print(self.data["location"]["city"], "Das Wetter ist")
for weather in self.data['forecasts']:
print(weather["date"])
print(weather["dateLabel"] + "Wetter:" + weather["telop"])
print("")
citycode = 260010 #Löschen
#Unten gelöscht
w = GetWeather()
w.getWeather(citycode)
w.showWeather()
import requests
from bs4 import BeautifulSoup #hinzufügen
class GetWeather:
url = "http://weather.livedoor.com/forecast/webservice/json/v1?"
source = "http://weather.livedoor.com/forecast/rss/primary_area.xml"
#Quelle hier hinzufügen
def getWeather(self): #Argument Stadtcode entfernen
query_params = {"city": self.citycode} #Ändern Sie den variablen Stadtcode in eine Instanzvariable
self.data = requests.get(self.url, params = query_params).json()
def showWeather(self):
print(self.data["location"]["city"], "Das Wetter ist")
for weather in self.data['forecasts']:
print(weather["date"])
print(weather["dateLabel"] + "Wetter:" + weather["telop"])
print("")
#Fügen Sie hier den Ausführungsteil hinzu
Die Quelle der Hinzufügung ist unten angegeben (bitte achten Sie beim Hinzufügen auf Einrückungen usw.).
#Instanzvariable hinzufügen
self.pref = "" #Lagerung ausgewiesener Präfekturen
self.citys = "" #Lagerung von Bereichen in ausgewiesenen Präfekturen
self.city = "" #Lagerung des ausgewiesenen Bereichs
self.citycode = "" #Speicherung der Vorwahl des angegebenen Gebiets
#Konstrukteur
def __init__(self):
self.html = requests.get(self.source)
self.soup = BeautifulSoup(self.html.text, "html.parser")
self.prefs = self.soup.find_all("pref")
#Präfektursuchmethode
def findPref(self, pref):
for i in self.prefs:
title = i.get("title")
if title == pref:
self.pref = title
self.citys = i.find_all("city")
#Regionale Suchmethode
def selectCity(self):
count = 1 #Zähler
titles = {} #Wörterbuch
for i in self.citys:
titles[i.get("title")] = i.get("id")
for i in titles:
print("Bereich", count, ":", i)
count += 1 #zusammenzählen
self.city = input("Bitte geben Sie den Bereich ein, in dem Sie das Wetter wissen möchten. >>>")
for i in titles:
if i == self.city:
self.citycode = titles[i]
#Ausgewählte Methode zur Anzeige der Präfektur / Region
def showArea(self):
print("Präfekturen:", self.pref)
print("Bereich:", self.city)
Zeile 1: Definition des Konstruktors. Wird automatisch ausgeführt, wenn eine Instanz erstellt wird. 2. Zeile: HTML-Quelle abrufen Zeile 3: HTML-Analyse 4. Zeile: Pref-Tag abrufen (Liste)
Zeile 1: Definition der findPref-Methode. Zustandssuchmethode.
2. Zeile: Extrahieren Sie die Tags einzeln aus der Liste mit den `pref``` -Tags und weisen Sie sie der Variablen
i zu. 3. Zeile: Extrahieren Sie das Attribut `` `title
aus dem im`` i``` gespeicherten ``
title-Tag und weisen Sie es der Variablen`` title
zu.
Zeile 5: Überprüfen Sie, ob `title``` und das Argument
pref gleich sind. Zeile 6: Wenn gleich, weisen Sie der Instanzvariablen `` `pref
zu.
Zeile 7: Weisen Sie der Instanzvariablen citys``` das im
pref-Tag enthaltene `` `city
-Tag zu.
Zeile 1: Definition der selectCity-Methode. Regionssuchmethode.
Zeile 5: Extrahieren Sie die Tags einzeln aus der Liste mit den Tags "city" und weisen Sie sie der Variablen "i" zu.
6. Zeile: Extrahieren Sie das Attribut `title``` des Tags`
city und geben Sie es als Schlüssel an. Extrahieren Sie das Attribut `` `id
des Tags
city und weisen Sie es dem Element zu. Zeile 8: Nehmen Sie die Schlüssel einzeln aus dem Wörterbuch `` `title
heraus und weisen Sie sie der Variableni``` zu. 9. Zeile:
Region n (Anzahl): Ausgabe als Regionsname``. 12. Zeile: Geben Sie den Bereichsnamen ein, den Sie angeben möchten. Zeile 14: Nehmen Sie die Schlüssel einzeln aus dem Wörterbuch ``
title heraus und weisen Sie sie der Variablen` `` i
zu.
Zeile 15: Überprüfen Sie, ob `i``` und die Instanzvariable`
city gleich sind. Zeile 16: Wenn gleich, weisen Sie der Instanzvariablen `` `citycode
das Element`` title [i] ``
zu.
Zeile 1: Definition der showArea-Methode. Die ausgewählte Status- / Regionsanzeigemethode. 2. Zeile: Gibt die angegebene Präfektur aus. 3. Zeile: Den ausgewählten Bereich ausgeben.
Fügen Sie die Quelle des Ausführungsteils hinzu.
w = GetWeather() #Instanzgenerierung
#Präfektur betreten
pref = input("Bitte geben Sie die Präfektur ein, in der Sie das Wetter erfahren möchten. >>>")
w.findPref(pref)
w.selectCity()
w.showArea()
w.getWeather()
w.showWeather()
--BeautifulSoup kann Daten aus HTML- und XML-Dateien erfassen und analysieren. ――Es könnte interessant sein, wenn Sie den Bereich mit einem Lesezeichen versehen könnten. ―― Immerhin ist es besser, das Wetter normal zu sehen y ('^' c 彡 ☆)) Д´) Pan
Recommended Posts