Je souhaite implémenter l'acquisition de la météo de préfecture / région spécifiée par l'utilisateur décrite dans le résumé précédent ** Obtenir la météo avec les requêtes Python **. Je l'ai fait parce que je pensais.
pip install beautifulsoup4``` à l'invite de commande.import requests
from bs4 import BeautifulSoup
#Obtenez la source HTML liée
html = requests.get("http://www.google.com")
soup = BeautifulSoup(html.text, "html.parser")
#Obtenez la première balise de titre et affichez chaque balise
print(soup.find("title"))
#Obtenez la première balise de titre et affichez uniquement l'élément
print(soup.title.string)
<title>Google</title>
Google
, `<link rel =" stylesheet "href =" # ">`
rel
,
`Href```, etc. sont appelés attributs.Formatez la source précédente pour cette source.
import requests
#à partir de l'importation BS4 Ajouter une belle soupe
class GetWeather:
url = "http://weather.livedoor.com/forecast/webservice/json/v1?"
#Ajout de l'URL du tableau de définition de l'emplacement national (RSS) pour le service météorologique(Destination de scraping Web)
# http://weather.livedoor.com/forecast/rss/primary_area.xml
def getWeather(self, citycode): #Supprimer l'argument citycode
query_params = {"city": citycode} #Changer le citycode variable en une variable de classe
self.data = requests.get(self.url, params = query_params).json()
def showWeather(self):
print(self.data["location"]["city"], "Le temps est")
for weather in self.data['forecasts']:
print(weather["date"])
print(weather["dateLabel"] + "La météo:" + weather["telop"])
print("")
citycode = 260010 #Effacer
#Supprimé ci-dessous
w = GetWeather()
w.getWeather(citycode)
w.showWeather()
import requests
from bs4 import BeautifulSoup #ajouter à
class GetWeather:
url = "http://weather.livedoor.com/forecast/webservice/json/v1?"
source = "http://weather.livedoor.com/forecast/rss/primary_area.xml"
#Ajouter la source ici
def getWeather(self): #Supprimer l'argument citycode
query_params = {"city": self.citycode} #Remplacez la variable citycode par une variable d'instance
self.data = requests.get(self.url, params = query_params).json()
def showWeather(self):
print(self.data["location"]["city"], "Le temps est")
for weather in self.data['forecasts']:
print(weather["date"])
print(weather["dateLabel"] + "La météo:" + weather["telop"])
print("")
#Ajouter une partie d'exécution ici
La source de l'ajout est indiquée ci-dessous (veuillez faire attention à l'indentation, etc. lors de l'ajout)
#Ajouter une variable d'instance
self.pref = "" #Stockage des préfectures désignées
self.citys = "" #Stockage des zones dans les préfectures désignées
self.city = "" #Stockage de la zone désignée
self.citycode = "" #Stockage de l'indicatif régional de la zone spécifiée
#constructeur
def __init__(self):
self.html = requests.get(self.source)
self.soup = BeautifulSoup(self.html.text, "html.parser")
self.prefs = self.soup.find_all("pref")
#Méthode de recherche de préfecture
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")
#Méthode de recherche régionale
def selectCity(self):
count = 1 #compteur
titles = {} #dictionnaire
for i in self.citys:
titles[i.get("title")] = i.get("id")
for i in titles:
print("zone", count, ":", i)
count += 1 #compter jusqu'à
self.city = input("Veuillez saisir la zone où vous souhaitez connaître la météo. >>>")
for i in titles:
if i == self.city:
self.citycode = titles[i]
#Méthode d'affichage de la préfecture / région sélectionnée
def showArea(self):
print("Préfectures:", self.pref)
print("zone:", self.city)
Ligne 1: Définition du constructeur. Exécute automatiquement lors de la création d'une instance. 2e ligne: obtenir la source HTML Ligne 3: analyse HTML 4ème ligne: Get pref tag (list)
Ligne 1: Définition de la méthode findPref. Méthode de recherche par état.
2ème ligne: Extrayez les balises une par une de la liste contenant les balises `pref``` et attribuez-les à la variable` `ʻi```. 3ème ligne: Extraire et attribuer l'attribut
title``` de la balise
pref``` stockée dans ```i``` à la variable`
title```.
Ligne 5: Vérifiez si le `titre``` et l'argument` `pref``` sont égaux. Ligne 6: Si égal, affectez à la variable d'instance
pref```. Ligne 7: Attribuez la balise
city``` contenue dans la balise`
pref à la variable d'instance` `` citys
.
Ligne 1: Définition de la méthode selectCity. Méthode de recherche par région.
Ligne 5: prenez les balises une à une dans la liste contenant les balises
city et attribuez-les à la variable `` i
.
6ème ligne: Extrayez l'attribut
title de la balise` `` city
et spécifiez-le comme clé. Extrayez l'attribut id
de la balise
city et attribuez-le à l'élément. Ligne 8: Sortez les clés une par une du dictionnaire `` `titres
et attribuez-les à la variable
ʻi. 9ème ligne: `` `` Region n (count): Output as region name` `. 12e ligne: entrez le nom de la zone que vous souhaitez spécifier. Ligne 14: Sortez les clés une par une du dictionnaire `` `titres
et attribuez-les à la variable
ʻi. Ligne 15: Vérifiez si
i et la variable d'instance `` `` city
sont égales.
Ligne 16: Si égal, assignez l'élément de `` title [i] '' à la variable d'instance
`citycode```.
Ligne 1: Définition de la méthode showArea. La méthode d'affichage de l'état / région sélectionné. 2e ligne: affiche la préfecture spécifiée. 3e ligne: affiche la zone sélectionnée.
Ajoutez la source de la partie exécution.
w = GetWeather() #Génération d'instance
#Entrez dans la préfecture
pref = input("Veuillez entrer la préfecture où vous souhaitez connaître la météo. >>>")
w.findPref(pref)
w.selectCity()
w.showArea()
w.getWeather()
w.showWeather()
--BeautifulSoup peut acquérir des données à partir de fichiers HTML et XML et les analyser. ――Il pourrait être intéressant de mettre en signet la zone. ――Après tout, il vaut mieux voir la météo normalement y ('^' c 彡 ☆)) Д´) Pan
Recommended Posts