Pythons enkelhed og tilpasningsevne har hjulpet det med at vinde popularitet gennem årene. Du kan nemt hente nyttige data over internettet med Python. Du kan derefter bruge disse data til at drive en praktisk applikation.

Lær, hvordan du finder vejrdata i realtid ved hjælp af web-scraping og API'er. Du kan bruge disse hentede data til at udvikle en simpel vejrapplikation.

Få aktuelle vejroplysninger om en by ved hjælp af webskrabning

Webskrabning er processen med at udtrække data og indhold fra et websted. Autonom hentning af data fra nettet åbner op for mange use cases. Men de fleste af disse data er i HTML-format, som du skal analysere og inspicere for at udtrække relevante data.

Du kan udtrække live vejrdata for enhver by ved hjælp af web-skrabning. Pythons BeautifulSoup-bibliotek er det foretrukne bibliotek at trække data ud af HTML- og XML-filer. Du skal installere BeautifulSoup Python-biblioteket via pip for at begynde skrabeprocessen. Kør følgende kommando i terminalen for at installere BeautifulSoup og forespørgselsbiblioteker:

instagram viewer
pip installere beautifulsoup4 anmodninger

Når du har installeret de nødvendige biblioteker, start med at importere dem i din kode:

Koden brugt i dette projekt er tilgængelig i en GitHub-depot og er gratis for dig at bruge under MIT-licensen.

fra bs4 importere Smuk suppe
importere anmodninger

Dernæst skal du angive headeroplysningerne, så klienten og serveren kan videregive yderligere oplysninger med en HTTP-anmodning eller et svar:

overskrifter = {
'Bruger-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, ligesom Gecko) Chrome/58.0.3029.110 Safari/537.3'
}

Opret en funktion, find_weather(), for at foretage en forespørgsel til Google ved hjælp af requests.get() metode. Du skal bruge en søgewebadresse til at få en bys vejr, og derefter skrabe de meningsfulde data for at få placering, temperatur, tid og vejrbeskrivelse. Brug derefter BeautifulSoup til at parse det modtagne HTML-svar:

deffind_weather(Bynavn):
bynavn = bynavn.erstat("", "+")

prøve:
res = requests.get(
f'https://www.google.com/search? q={bynavn}&oq={bynavn}&aqs=chrome.0.35i39l2j0l4j46j69i60.6128j1j7&sourceid=chrome&dvs.=UTF-8', overskrifter=overskrifter)

Print("Indlæser...")

suppe = Smuksuppe (res.text, 'html.parser')
placering = 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()

Print("Beliggenhed: " + placering)
Print("Temperatur: " + temperatur + "°C")
Print("Tid: " + tid)
Print("Vejrbeskrivelse: " + info)
undtagen:
Print("Indtast venligst et gyldigt bynavn")

For at udtrække element-id'erne skal du udføre en Google-søgning og inspicere siden i din browser ved hjælp af webværktøjer. Du skal inspicere elementet for at finde ID'erne for det HTML-element, som du vil udtrække data for:

Send derefter disse ID'er til Vælg() metode. Denne metode kører en CSS-vælger mod det parsede dokument og returnerer alle matchende elementer. Det getText() metoden udtrækker teksten fra HTML-elementet. Det strip() metode fjerner alle indledende og efterfølgende mellemrumstegn fra teksten. Når du har udtrukket en ren værdi, kan du gemme den i en variabel.

Bed endelig brugeren om at indtaste en by og videregive den til find_weather fungere:

bynavn = input("Indtast bynavn: ")
bynavn = bynavn + " vejr"
find_weather (by_navn)

Nu, når du kører koden, vil den bede dig om at indtaste et bynavn. Du skal indtaste et gyldigt bynavn for at få resultaterne, ellers vil koden medføre en undtagelse.

Få aktuelle vejroplysninger om en by ved hjælp af OpenWeatherMap API

OpenWeatherMap er en onlinetjeneste, der ejes af OpenWeather Ltd. Dens API giver globale vejrdata, herunder nuværende vejr, prognoser og tidligere data for enhver placering. Det gratis niveau af OpenWeatherMap API giver aktuelle vejrdata med en grænse på 60 opkald/minut. Du skal oprette en konto på OpenWeatherMap for at få din egen API-nøgle.

Skub ikke koden med API-nøglen til et offentligt lager, da alle med adgang til dine kildefiler kan se og stjæle din nøgle. Overvej i en produktionsapp flytte API-nøgledata til en .env-fil for øget sikkerhed.

Gå til OpenWeather Maps hjemmeside og opret en gratis konto. Når du har oprettet kontoen, kan du finde dine API-nøgler på Mine API-nøgler side. Du kan bruge standard API-nøglen fra OpenWeatherMap eller generere en af ​​dine egne. OpenWeatherMap giver support til at generere så mange API-nøgler som nødvendigt til dine projekter.

Nu er du klar til at hente live vejrdata.

# Importerer biblioteker
importere anmodninger
importere json

# Indtast din OpenWeatherMap API-nøgle her
# Skub den IKKE til et offentligt lager
API_Nøgle = "Din_API_Nøgle"

# Angiv et gyldigt bynavn
bynavn = input("Indtast bynavn: ")

# Konstruktion af API URL-stien
url = f"http://api.openweathermap.org/data/2.5/weather? q={bynavn}&appid={API_Key}"

# Foretag en get-anmodning til API'et
respons = requests.get (url)

# Konvertering af JSON-svar til en ordbog
res = respons.json()

# Fjern kommentaren til den næste linje for at se alle
# data, der er hentet fra API'en
# print (res)

# Tjek om byen er fundet
# Hvis værdien af ​​"cod" ikke er 404,
# det betyder, at byen er fundet
hvis res["torsk"] != "404":
data = res["vigtigste"]

# Lagring af live temperaturdata
live_temperatur = data["Midlertidig"]

# Lagring af livetrykdata
live_pressure = data["tryk"]
desc = res["vejr"]

# Lagring af vejrbeskrivelsen
weather_description = desc[0]["beskrivelse"]
Print("Temperatur (i Kelvin-skala): " + str (live_temperatur))
Print("Tryk: " + str (live_tryk))
Print("Beskrivelse: " + str (vejrbeskrivelse))

andet:
# Hvis byen ikke findes,
# denne kodeblok vil blive udført
Print("Indtast venligst et gyldigt bynavn")

Hvis du angiver en gyldig API-nøgle og indtaster det korrekte bynavn, modtager du dataene fra API'en i JSON-format. Dernæst skal du konvertere disse JSON-formatdata til et Python-objekt ved hjælp af json() metode til at udføre yderligere operationer. Hvis byen bliver fundet, bliver du nødt til at løse dict-objektet (res) for at udtrække de nødvendige oplysninger.

Udvikl vejrapplikation ved hjælp af live vejrdata

Nu hvor du har lært, hvordan du henter live data ved hjælp af OpenWeatherMap API, er du klar til at udvikle en simpel vejrapplikation, der bruger den. At bygge en vejrapplikation kan hjælpe dig med at anvende det, du ved, og finpudse dine Python-færdigheder.

At få hænderne snavsede på praktiske projekter kan gøre dig til en bedre udvikler. Du kan udvikle nogle andre Python-projekter som et login-system, quiz-app eller URL-forkorter for at styrke dine Python-udviklingsevner.