Python Interneti-juurdepääs Urllib.Requesti ja urlopen() abil
⚡ Nutikas kokkuvõte
urllib on standard Python moodul internetiandmetele juurdepääsuks, programmide avamiseks URLja hangib HTML-i, JSON-i või binaarsisu. Funktsioon urllib.request.urlopen() loob ühenduse veebiaadressiga ja loeb serveri vastuse otse sisse. Python.

Allolevad jaotised selgitavad, mis on urllib, kuidas avada URL ja lugege selle HTML-i ning seda, kuidas vigu käsitleda, faile alla laadida ja valida urllib'i ja päringute teegi vahel.
Mis on urllib?
urllib on a Python moodul, mida saab kasutada avamiseks URLs. See defineerib funktsioonid ja klassid, mis aitavad URL toimingud.
koos Python, saate internetist juurde pääseda ja andmeid hankida (nt XML, HTML ja JSON) ning seejärel nende andmetega otse töötada. Allpool näeme, kuidas veebist andmeid hankida. Näiteks siin kasutame a Guru99 video URL, avage see, kasutades Pythonja printige selle HTML-fail välja URL.
Urllib pakett koondab mitu moodulit: urllib.request avamiseks URLs, urllib.error päringute tekitatavate erandite jaoks, urllib.parse loomiseks ja parsimiseks URLs ja urllib.robotparser robots.txt failide lugemiseks.
Kuidas avada URL Urllibi kasutamine
Enne internetiühenduse loomiseks koodi käivitamist peame importima URL teekimoodul ehk „urllib”.
- Import urllib
- Määratlege oma põhifunktsioon
- Deklareerige muutuja webUrl
- Seejärel kutsu urllib teegis urlopen funktsioon
- . URL me avame on Guru99 õpetust teemal YouTube
- Järgmisena prindime tulemuskoodi
- Tulemuskoodi leitakse, kutsudes loodud webUrl muutujale funktsiooni getcode.
- Teisendame selle stringiks, et seda saaks ühendada meie stringiga „tulemuskood”.
- See on tavaline HTTP-kood „200”, mis näitab, et HTTP-päring on edukalt töödeldud.
Kuidas HTML-faili saada URL in Python
HTML-faili saab lugeda ka read() funktsiooni abil PythonKoodi käivitamisel kuvatakse HTML-fail konsoolis.
- Kutsu webUrl muutuja read() funktsiooni
- Meetod read() võimaldab teil lugeda andmefailide sisu.
- Loe kogu sisu URL muutujasse nimega andmed
- Käivita kood ja see prindib andmed HTML-vormingus
Siin on täielik kood:
Python 2 Näide
# # read the data from the URL and print it # import urllib2 def main(): # open a connection to a URL using urllib2 webUrl = urllib2.urlopen("https://www.youtube.com/user/guru99com") #get the result code and print it print "result code: " + str(webUrl.getcode()) # read the data from the URL and print it data = webUrl.read() print data if __name__ == "__main__": main()
Python 3 Näide
# # read the data from the URL and print it # import urllib.request # open a connection to a URL using urllib webUrl = urllib.request.urlopen('https://www.youtube.com/user/guru99com') #get the result code and print it print ("result code: " + str(webUrl.getcode())) # read the data from the URL and print it data = webUrl.read() print (data)
Kuidas urllib-vigu käsitleda: URLViga ja HTTP-viga
Päring ei õnnestu alati. Kui midagi läheb valesti, tekitab urllib andmete tagastamise asemel erandi, seega on oluline nende vigadega tegeleda. Moodul urllib.error defineerib kaks peamist erandite klassi.
- HTTP-viga Tekib siis, kui server tagastab vea olekukoodi, näiteks 404 Not Found või 500 Internal Server Error. See sisaldab olekukoodi ja vastuse sisu.
- URLviga Tekib siis, kui serveriga pole üldse ühendust, näiteks vale domeeninime või internetiühenduse puudumise tõttu. Sellel on põhjuse atribuut, mis selgitab tõrke põhjust.
Kuna HTTPError on alamklass URLViga, püüa HTTPError alati esimesena kinni, et iga veatüüpi käsitletaks eraldi:
from urllib.request import urlopen from urllib.error import HTTPError, URLError try: response = urlopen("https://www.guru99.com/no-such-page.html") data = response.read() except HTTPError as error: print("HTTP error:", error.code) except URLError as error: print("URL error:", error.reason)
Nende erandite käsitlemine hoiab ära programmi krahhi ning võimaldab teil probleemi logida, päringut uuesti proovida või vahemällu salvestatud andmetele tagasi pöörduda.
Kuidas faili alla laadida URL Urllibi kasutamine
A URL Mällu salvestamine toimib väikeste lehtede puhul, kuid piltide, PDF-dokumentide või andmekogumite puhul on lihtsam vastus otse kettale salvestada. Moodul urllib.request pakub selleks kahte lihtsat viisi.
Funktsioon urlretrieve() laadib alla URL otse kohalikku faili ühel real:
from urllib.request import urlretrieve urlretrieve("https://www.python.org/static/img/python-logo.png", "logo.png")
Täpsema kontrolli saamiseks avage URL ja kirjuta baidid ise. Ava kohalik fail binaarrežiimis, sest urlopen() tagastab baite, mitte teksti:
from urllib.request import urlopen with urlopen("https://example.com/data.zip") as response: with open("data.zip", "wb") as file: file.write(response.read())
Väga suurte failide puhul loe ja kirjuta tsüklis, kasutades funktsiooni response.read(8192), nii et kogu faili ei hoita kunagi korraga mälus.
urllib vs. päringute teek Python
urllib on osa sellest Python standardteek, seega töötab see kõikjal ilma installimiseta. Kolmandate osapoolte päringute teeki pole küll sisse ehitatud, kuid paljud arendajad eelistavad seda igapäevaseks HTTP-tööks, kuna selle süntaks on lühem ja loetavam.
Peamised erinevused on:
- Paigaldus: urllib on kaasas Python, samas kui päringud tuleb installida pip-iga.
- Dekodeerimine: urllib tagastab toored baidid, mille dekodeerid ise, samas kui päringud dekodeerivad teksti ja JSON-i automaatselt.
- Mugavus: päringud haldavad seansse, küpsiseid ja kohandatud päiseid väiksema koodiga.
- Sõltuvad: urllib ei lisa midagi, samas kui päringud tuginevad selle all olevale urllib3-le.
Vali urllib, kui sa ei soovi sõltuvusi või vajad vaid kiiret ühekordset päringut. Vali päringud suuremate projektide jaoks, mis hõlmavad autentimist, seansse või sagedasi API-kõnesid. Mõlemad saadavad samu aluseks olevaid HTTP-päringuid, seega taandub otsus mugavusele või väiksemale sõltuvuste loendile.


