Pythons enkelhet og tilpasningsevne har hjulpet den til å bli populær gjennom årene. Du kan enkelt hente nyttige data over internett med Python. Du kan deretter bruke disse dataene til å drive en praktisk applikasjon.

Lær hvordan du finner værdata i sanntid ved hjelp av nettskraping og APIer. Du kan bruke disse hentede dataene til å utvikle en enkel værapplikasjon.

Få aktuelle værdetaljer for en by ved å bruke nettskraping

Nettskraping er prosessen med å trekke ut data og innhold fra et nettsted. Autonom henting av data fra nettet åpner for mange bruksområder. Men de fleste av disse dataene er i HTML-format, som du må analysere og inspisere for å trekke ut relevante data.

Du kan trekke ut live værdata for enhver by ved å bruke nettskraping. Pythons BeautifulSoup-bibliotek er det du bør gå til å trekke data ut av HTML- og XML-filer. Du må installere BeautifulSoup Python-biblioteket via pip for å starte skrapeprosessen. Kjør følgende kommando i terminalen for å installere BeautifulSoup- og forespørselsbibliotekene:

pip installere beautifulsoup4 forespørsler

Etter at du har installert de nødvendige bibliotekene, start med å importere dem i koden din:

Koden som brukes i dette prosjektet er tilgjengelig i en GitHub-depot og er gratis for deg å bruke under MIT-lisensen.

fra bs4 import Vakker suppe
import forespørsler

Deretter må du oppgi toppdetaljene slik at klienten og serveren kan sende tilleggsinformasjon med en HTTP-forespørsel eller et svar:

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

Lag en funksjon, finn_vær(), for å sende en forespørsel til Google ved å bruke requests.get() metode. Du bruker en søke-URL for å få en bys vær, og deretter skrape de meningsfulle dataene for å få plassering, temperatur, tid og værbeskrivelse. Bruk deretter BeautifulSoup til å analysere det mottatte HTML-svaret:

deffinn_vær(By Navn):
bynavn = bynavn.erstatt("", "+")

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)

skrive ut("Laster inn...")

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

skrive ut("Plassering: " + plassering)
skrive ut("Temperatur: " + temperatur + "°C")
skrive ut("Tid: " + tid)
skrive ut("Værbeskrivelse: " + info)
unntatt:
skrive ut("Vennligst skriv inn et gyldig bynavn")

For å trekke ut element-ID-ene, utfør et Google-søk og inspiser siden i nettleseren din ved hjelp av nettverktøy. Du må inspisere elementet for å finne ID-ene til HTML-elementet du vil trekke ut data for:

Send deretter disse ID-ene til plukke ut() metode. Denne metoden kjører en CSS-velger mot det analyserte dokumentet og returnerer alle samsvarende elementer. De getText() metode trekker ut teksten fra HTML-elementet. De strip() metoden fjerner eventuelle innledende og etterfølgende mellomromstegn fra teksten. Når du har hentet ut en ren verdi, kan du lagre den i en variabel.

Til slutt, be brukeren om å legge inn en by og sende den til finn_vær funksjon:

bynavn = input("Skriv inn bynavn: ")
bynavn = bynavn + " vær"
finn_vær (bynavn)

Nå, når du kjører koden, vil den be deg om å skrive inn et bynavn. Du må angi et gyldig bynavn for å få resultatene, ellers vil koden føre til et unntak.

Få nåværende værdetaljer for en by ved å bruke OpenWeatherMap API

OpenWeatherMap er en nettbasert tjeneste, eid av OpenWeather Ltd. Dens API gir globale værdata inkludert nåværende vær, prognoser og tidligere data for ethvert sted. Gratisnivået til OpenWeatherMap API gir gjeldende værdata med en grense på 60 anrop/minutt. Du må opprette en konto på OpenWeatherMap for å få din egen API-nøkkel.

Ikke skyv koden med API-nøkkelen til et offentlig depot, siden alle med tilgang til kildefilene dine kan se og stjele nøkkelen din. I en produksjonsapp, vurder flytte API-nøkkeldataene til en .env-fil for økt sikkerhet.

Gå til OpenWeather Maps nettstedet og opprette en gratis konto. Etter å ha opprettet kontoen, kan du finne API-nøklene dine på Mine API-nøkler side. Du kan bruke standard API-nøkkelen fra OpenWeatherMap eller generere en av dine egne. OpenWeatherMap gir støtte for å generere så mange API-nøkler som trengs for prosjektene dine.

Nå er du klar til å hente live værdata.

# Importerer biblioteker
import forespørsler
import json

# Skriv inn OpenWeatherMap API-nøkkelen din her
# IKKE skyv den til et offentlig depot
API_Key = "Din_API_nøkkel"

# Oppgi et gyldig bynavn
bynavn = input("Skriv inn bynavn: ")

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

# Foreta en get-forespørsel til API
respons = requests.get (url)

# Konvertering av JSON-svar til en ordbok
res = respons.json()

# Fjern kommentaren på neste linje for å se alle
# data som er hentet fra API
# utskrift (res)

# Sjekker om byen er funnet
# Hvis verdien av "cod" ikke er 404,
# det betyr at byen er funnet
hvis res["torsk"] != "404":
data = res["hoved-"]

# Lagring av live temperaturdata
live_temperatur = data["temp"]

# Lagring av livetrykkdata
live_pressure = data["press"]
desc = res["vær"]

# Lagre værbeskrivelsen
værbeskrivelse = desc[0]["beskrivelse"]
skrive ut("Temperatur (i Kelvin-skala): " + str (live_temperatur))
skrive ut("Press: " + str (livetrykk))
skrive ut("Beskrivelse: " + str (værbeskrivelse))

ellers:
# Hvis byen ikke blir funnet,
# denne kodeblokken vil bli utført
skrive ut("Vennligst skriv inn et gyldig bynavn")

Hvis du oppgir en gyldig API-nøkkel og skriver inn riktig bynavn, vil du motta dataene fra API-en i JSON-format. Deretter må du konvertere disse JSON-formatdataene til et Python-objekt ved å bruke json() metode for å utføre ytterligere operasjoner. Hvis byen blir funnet, må du løse dict-objektet (res) for å trekke ut den nødvendige informasjonen.

Utvikle værapplikasjoner ved å bruke live-værdata

Nå som du har lært hvordan du henter direkte data ved hjelp av OpenWeatherMap API, er du klar til å utvikle en enkel værapplikasjon som bruker den. Å bygge en værapplikasjon kan hjelpe deg med å bruke det du vet og finpusse Python-ferdighetene dine.

Å skitne hendene på praktiske prosjekter kan gjøre deg til en bedre utvikler. Du kan utvikle noen andre Python-prosjekter som et påloggingssystem, quiz-app eller URL-forkorter for å styrke Python-utviklingsferdighetene dine.