Pythoni lihtsus ja kohanemisvõime on aidanud sellel läbi aastate populaarsust koguda. Pythoni abil saate hõlpsalt Internetist kasulikke andmeid hankida. Seejärel saate neid andmeid kasutada praktilise rakenduse juhtimiseks.
Siit saate teada, kuidas veebikraapimise ja API-de abil reaalajas ilmaandmeid leida. Saate neid hangitud andmeid kasutada lihtsa ilmarakenduse arendamiseks.
Hankige veebikraapimise abil linna praeguse ilma kohta üksikasju
Veebi kraapimine on veebisaidilt andmete ja sisu eraldamise protsess. Autonoomne andmete toomine veebist avab palju kasutusjuhtumeid. Kuid enamik neist andmetest on HTML-vormingus, mida peate asjakohaste andmete eraldamiseks sõeluma ja kontrollima.
Saate veebikraapimise abil ekstraheerida mis tahes linna reaalajas ilmateateid. Pythoni teek BeautifulSoup on kasutatav raamatukogu HTML- ja XML-failidest andmete välja tõmbamiseks. Kraapimisprotsessi alustamiseks peate installima pipi kaudu BeautifulSoup Pythoni teegi. Teekide BeautifulSoup ja taotluste installimiseks käivitage terminalis järgmine käsk:
pip installida ilus supp4 taotlust
Pärast vajalike teekide installimist importige need oma koodi.
Selles projektis kasutatav kood on saadaval a GitHubi hoidla ja seda saate MIT-i litsentsi alusel tasuta kasutada.
alates bs4 importida Ilus supp
importida taotlusi
Järgmiseks peate esitama päise üksikasjad, et klient ja server saaksid HTTP päringu või vastusega täiendavat teavet edastada:
päised = {
'Kasutaja agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, nagu Gecko) Chrome/58.0.3029.110 Safari/537.3'
}
Looge funktsioon, leia_ilm(), et teha Google'ile päring, kasutades requests.get() meetod. Kasutate linna ilmateate leidmiseks otsingu URL-i, seejärel kraapite asukoha, temperatuuri, kellaaja ja ilmakirjelduse saamiseks olulised andmed. Seejärel kasutage saadud HTML-i vastuse sõelumiseks rakendust BeautifulSoup:
defleia_ilm(Linna nimi):
linna_nimi = linna_nimi.asenda("", "+")proovi:
res = requests.get(
f'https://www.google.com/search? q={linna_nimi}&oq={linna_nimi}&aqs=chrome.0.35i39l2j0l4j46j69i60.6128j1j7&sourceid=chrome&ie=UTF-8', päised=päised)print("Laadimine...")
supp = BeautifulSoup (res.text, 'html.parser')
asukoht = supp.select('#wob_loc')[0].getText().riba()
aeg = supp.select('#wob_dts')[0].getText().riba()
info = supp.select('#wob_dc')[0].getText().riba()
temperatuur = supp.select('#wob_tm')[0].getText().riba()
print("Asukoht: " + asukoht)
print("Temperatuur: " + temperatuur + "°C")
print("Aeg: " + aeg)
print("Ilmastiku kirjeldus: " + info)
välja arvatud:
print("Sisestage kehtiv linna nimi")
Elementide ID-de eraldamiseks tehke Google'i otsing ja kontrollige veebitööriistade abil lehte oma brauseris. Peate elementi kontrollima, et leida selle HTML-elemendi ID-d, mille kohta soovite andmeid ekstraheerida:
Järgmisena edastage need ID-d aadressile vali() meetod. See meetod käivitab parsitud dokumendi suhtes CSS-i valija ja tagastab kõik sobivad elemendid. The getText() meetod eraldab teksti HTML-elemendist. The riba () meetod eemaldab tekstist kõik ees- ja lõpus olevad tühimärgid. Kui olete puhta väärtuse ekstraheerinud, saate selle muutujasse salvestada.
Lõpuks paluge kasutajal sisestada linn ja edastada see aadressile leia_ilm funktsioon:
linna_nimi = input("Sisesta linna nimi: ")
linna_nimi = linna_nimi + " ilm"
leia_ilm (linna_nimi)
Nüüd, kui käivitate koodi, palub see teil sisestada linna nimi. Tulemuste saamiseks peate sisestama kehtiva linna nime, vastasel juhul tekitab kood erandi.
Hankige linna praeguse ilma üksikasjad OpenWeatherMap API abil
OpenWeatherMap on võrguteenus, mille omanik on OpenWeather Ltd. Selle API pakub globaalseid ilmaandmeid, sealhulgas praegust ilma, prognoose ja varasemaid andmeid mis tahes asukoha kohta. OpenWeatherMap API tasuta tasand pakub praeguseid ilmaandmeid piiranguga 60 kõnet minutis. Oma API-võtme saamiseks peate OpenWeatherMapis looma konto.
Ärge suruge API-võtmega koodi avalikku hoidlasse, kuna igaüks, kellel on juurdepääs teie lähtefailidele, võib teie võtit näha ja varastada. Kaaluge tootmisrakenduses API võtme andmete teisaldamine env-faili turvalisuse suurendamiseks.
Minema OpenWeatherMap's veebisaiti ja looge tasuta konto. Pärast konto loomist leiate oma API võtmed lehelt Minu API võtmed lehel. Võite kasutada OpenWeatherMapi pakutavat API vaikevõtit või luua oma võtme. OpenWeatherMap pakub tuge nii paljude API-võtmete loomiseks, kui teie projektide jaoks vaja on.
Nüüd olete valmis reaalajas ilmateateid hankima.
# Teekide importimine
importida taotlusi
importida json# Sisestage siia oma OpenWeatherMap API võti
# ÄRGE lükake seda avalikku hoidlasse
API_Key = "Teie_API_võti"# Esitage kehtiv linna nimi
linna_nimi = input("Sisesta linna nimi: ")# API URL-i tee koostamine
url = f"http://api.openweathermap.org/data/2.5/weather? q={linna_nimi}&appid={API_Key}"# API-le hankimistaotluse esitamine
vastus = requests.get (url)# JSON-vastuse teisendamine sõnastikku
res = vastus.json()# Kõigi nägemiseks tühistage järgmise rea kommentaar
# andmed, mis on toodud API-st
# print (res.)# Kontrollitakse, kas linn on leitud
# Kui "tursa" väärtus ei ole 404,
# see tähendab, et linn on leitud
if res["tursk"] != "404":
andmed = res["peamine"]# Reaalajas temperatuuriandmete salvestamine
reaalajas_temperatuur = andmed["temp"]# Reaalajas rõhuandmete salvestamine
reaalajas_rõhk = andmed["survet"]
desc = res["ilm"]# Ilmakirjelduse salvestamine
ilma_kirjeldus = kirjeldus[0]["kirjeldus"]
print("Temperatuur (Kelvini skaalal): " + str (aktiivne_temperatuur))
print("Rõhk: " + str (aktiivne_rõhk))
print("Kirjeldus: " + str (ilma_kirjeldus))
muidu:
# Kui linna ei leita,
# see koodiplokk käivitatakse
print("Sisestage kehtiv linna nimi")
Kui esitate kehtiva API-võtme ja sisestate õige linna nime, saate API-lt andmed JSON-vormingus. Järgmisena peate need JSON-vormingus andmed teisendama Pythoni objektiks, kasutades json() meetod edasiste toimingute tegemiseks. Kui linn leitakse, peate lahendama dikteerimisobjekti (res) vajaliku teabe hankimiseks.
Arendage ilmarakendust, kasutades reaalajas ilmaandmeid
Nüüd, kui olete õppinud, kuidas OpenWeatherMap API abil reaalajas andmeid hankida, olete valmis selle abil lihtsa ilmarakenduse välja töötama. Ilmarakenduse loomine võib aidata teil teadmisi rakendada ja oma Pythoni oskusi lihvida.
Praktiliste projektide kallal käsi määrimine võib muuta teid paremaks arendajaks. Pythoni arendusoskuste tugevdamiseks saate arendada mõnda muud Pythoni projekti, näiteks sisselogimissüsteemi, viktoriinirakendust või URL-i lühendajat.