Pythons enkelhet och anpassningsförmåga har hjälpt den att bli populär genom åren. Du kan enkelt hämta användbar data över internet med Python. Du kan sedan använda den informationen för att driva en praktisk tillämpning.
Lär dig hur du hittar väderdata i realtid med hjälp av webbskrapning och API: er. Du kan använda dessa hämtade data för att utveckla en enkel väderapplikation.
Få aktuella väderinformation om en stad med webbskrapning
Webbskrapning är processen att extrahera data och innehåll från en webbplats. Att autonomt hämta data från webben öppnar upp för många användningsfall. Men de flesta av dessa data är i HTML-format, som du behöver analysera och inspektera för att extrahera relevant data.
Du kan extrahera live väderdata för vilken stad som helst med hjälp av webbskrapning. Pythons BeautifulSoup-bibliotek är det bästa biblioteket för att hämta data från HTML- och XML-filer. Du måste installera BeautifulSoup Python-biblioteket via pip för att börja skrapningsprocessen. Kör följande kommando i terminalen för att installera BeautifulSoup och begärande bibliotek:
pip Installera beautifulsoup4 förfrågningar
När du har installerat de nödvändiga biblioteken, börja med att importera dem i din kod:
Koden som används i detta projekt är tillgänglig i en GitHub-förråd och är gratis för dig att använda under MIT-licensen.
från bs4 importera Vacker soppa
importera förfrågningar
Därefter måste du ange huvudinformationen så att klienten och servern kan skicka ytterligare information med en HTTP-förfrågan eller ett svar:
rubriker = {
'Användaragent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, som Gecko) Chrome/58.0.3029.110 Safari/537.3'
}
Skapa en funktion, find_weather(), för att göra en förfrågan till Google med hjälp av requests.get() metod. Du använder en sökwebbadress för att få reda på en stads väder, och sedan skrapa den meningsfulla informationen för att få plats, temperatur, tid och väderbeskrivning. Använd sedan BeautifulSoup för att analysera det mottagna HTML-svaret:
defhitta_väder(Stadens namn):
city_name = city_name.replace("", "+")Prova:
res = requests.get(
f'https://www.google.com/search? q={stadsnamn}&oq={stadsnamn}&aqs=chrome.0.35i39l2j0l4j46j69i60.6128j1j7&sourceid=chrome&dvs=UTF-8', headers=headers)skriva ut("Läser in...")
soppa = BeautifulSoup (res.text, 'html.parser')
plats = soup.select('#wob_loc')[0].getText().strip()
tid = soup.select('#wob_dts')[0].getText().strip()
info = soup.select('#wob_dc')[0].getText().strip()
temperatur = soup.select('#wob_tm')[0].getText().strip()
skriva ut("Plats: " + plats)
skriva ut("Temperatur: " + temperatur + "°C")
skriva ut("Tid: " + tid)
skriva ut("Väderbeskrivning: " + info)
bortsett från:
skriva ut("Ange ett giltigt stadsnamn")
För att extrahera element-ID: n, gör en Google-sökning och inspektera sidan i din webbläsare med hjälp av webbverktyg. Du måste inspektera elementet för att hitta ID: n för HTML-elementet som du vill extrahera data för:
Skicka sedan dessa ID: n till Välj() metod. Denna metod kör en CSS-väljare mot det analyserade dokumentet och returnerar alla matchande element. De getText() metod extraherar texten från HTML-elementet. De remsa() metod tar bort alla inledande och avslutande blanksteg från texten. När du har extraherat ett rent värde kan du lagra det i en variabel.
Be slutligen användaren att ange en stad och skicka den till hitta_väder fungera:
city_name = input("Ange ortsnamn: ")
city_name = city_name + " väder"
hitta_väder (stadsnamn)
Nu, när du kör koden, kommer den att uppmana dig att ange ett stadsnamn. Du måste ange ett giltigt stadsnamn för att få resultaten, annars kommer koden att skapa ett undantag.
Få aktuella väderinformation om en stad med OpenWeatherMap API
OpenWeatherMap är en onlinetjänst som ägs av OpenWeather Ltd. Dess API tillhandahåller global väderdata inklusive aktuellt väder, prognoser och tidigare data för vilken plats som helst. Den kostnadsfria nivån för OpenWeatherMap API ger aktuell väderdata med en gräns på 60 samtal/minut. Du måste skapa ett konto på OpenWeatherMap för att få din egen API-nyckel.
Tryck inte koden med API-nyckeln till ett offentligt arkiv eftersom alla som har tillgång till dina källfiler kan se och stjäla din nyckel. Överväg i en produktionsapp flytta API-nyckeldata till en .env-fil för ökad säkerhet.
Gå till OpenWeather Maps webbplats och skapa ett gratis konto. När du har skapat kontot kan du hitta dina API-nycklar på Mina API-nycklar sida. Du kan använda standard-API-nyckeln som tillhandahålls av OpenWeatherMap eller skapa en egen. OpenWeatherMap ger stöd för att generera så många API-nycklar som behövs för dina projekt.
Nu är du redo att hämta live väderdata.
# Importera bibliotek
importera förfrågningar
importera json# Ange din OpenWeatherMap API-nyckel här
# Skjut den INTE till ett offentligt arkiv
API_Key = "Din_API_nyckel"# Ange ett giltigt stadsnamn
city_name = input("Ange stadens namn: ")# Konstruera API URL-sökvägen
url = f"http://api.openweathermap.org/data/2.5/weather? q={stadsnamn}&appid={API_Key}"# Gör en get-förfrågan till API: t
svar = requests.get (url)# Konverterar JSON-svar till en ordbok
res = respons.json()# Avkommentera nästa rad för att se alla
# data som hämtas från API: et
# utskrift (res)# Kontrollerar om staden hittas
# Om värdet på "cod" inte är 404,
# det betyder att staden är hittad
om res["torsk"] != "404":
data = res["huvud"]# Lagring av livetemperaturdata
live_temperatur = data["temp"]# Lagring av levande tryckdata
live_pressure = data["tryck"]
desc = res["väder"]# Lagrar väderbeskrivningen
väderbeskrivning = desc[0]["beskrivning"]
skriva ut("Temperatur (i Kelvin-skala): " + str (live_temperatur))
skriva ut("Tryck: " + str (live_tryck))
skriva ut("Beskrivning: " + str (väderbeskrivning))
annan:
# Om staden inte hittas,
# detta kodblock kommer att exekveras
skriva ut("Ange ett giltigt stadsnamn")
Om du anger en giltig API-nyckel och anger rätt stadsnamn får du data från API: t i JSON-format. Därefter måste du konvertera dessa JSON-formatdata till ett Python-objekt med hjälp av json() metod för att utföra ytterligare operationer. Om staden hittas måste du lösa dict-objektet (res) för att extrahera den information som krävs.
Utveckla väderapplikationen med hjälp av live väderdata
Nu när du har lärt dig hur du hämtar livedata med OpenWeatherMap API, är du redo att utveckla en enkel väderapplikation med den. Att bygga en väderapplikation kan hjälpa dig att tillämpa det du vet och finslipa dina Python-färdigheter.
Att smutsa ner händerna på praktiska projekt kan göra dig till en bättre utvecklare. Du kan utveckla några andra Python-projekt som ett inloggningssystem, frågesport-app eller URL-förkortare för att stärka dina Python-utvecklingsfärdigheter.