Python Internet hozzáférés az Urllib.Request és az urlopen() használatával
⚡ Okos összefoglaló
Az urllib a szabványos Python modul internetes adatok eléréséhez, programok megnyitásához URLés HTML, JSON vagy bináris tartalmat kér le. Az urllib.request.urlopen() függvény egy webcímhez csatlakozik, és közvetlenül beolvassa a szerver válaszát a Python.

Az alábbi szakaszok elmagyarázzák, mi az urllib, hogyan lehet megnyitni egy URL és elolvashatja a HTML-kódját, valamint azt, hogyan kezelheti a hibákat, tölthet le fájlokat, és hogyan választhat az urllib és a kéréskönyvtár között.
Mi az urllib?
urllib egy Python nyitáshoz használható modul URLs. Függvényeket és osztályokat definiál, amelyek segítenek a URL intézkedéseket.
A Python, az internetről is hozzáférhet és lekérhet adatokat, például XML, HTML és JSON formátumban, majd közvetlenül ezekkel az adatokkal dolgozhat. Az alábbi szakaszokban bemutatjuk, hogyan kérhet le adatokat az internetről. Itt például egy Guru99 videó URL, a következővel érheti el: Python, és nyomtassa ki ennek a HTML fájlját URL.
Az urllib csomag több modult csoportosít: az urllib.request a megnyitáshoz URLs, urllib.error a kérések által kiváltható kivételekhez, urllib.parse az összeállításhoz és elemzéshez URLs, és az urllib.robotparser a robots.txt fájlok olvasásához.
Hogyan nyissuk meg URL Urllib használatával
Mielőtt lefuttatnánk a kódot az internetes adatokhoz való csatlakozáshoz, importálnunk kell a URL könyvtári modul, vagy „urllib”.
- urllib importálása
- Határozza meg fő funkcióját
- Deklarálja a webUrl változót
- Ezután hívd meg az urllopen függvényt az urllib könyvtárban.
- Az URL megnyitjuk az a Guru99 oktatóanyag a következőről: YouTube
- Ezután kinyomtatjuk az eredménykódot.
- Az eredménykódot a létrehozott webUrl változón alapuló getcode függvény meghívásával kérhetjük le.
- Ezt karakterlánccá alakítjuk, hogy összefűzhető legyen az „eredménykód” karakterláncunkkal.
- Ez egy szokásos HTTP kód, a „200” lesz, ami azt jelzi, hogy a HTTP kérés feldolgozása sikeres volt.
Hogyan lehet HTML fájlt lekérni egy URL in Python
A HTML fájlt a read() függvénnyel is beolvashatod a PythonA kód futtatásakor a HTML fájl megjelenik a konzolban.
- Hívd meg a read() függvényt a webUrl változón
- A read() metódus lehetővé teszi az adatfájlok tartalmának beolvasását.
- Olvasd el a teljes tartalmat URL egy adat nevű változóba
- Futtasd a kódot, és az HTML formátumban fogja kinyomtatni az adatokat
Itt a teljes kód:
Python 2 Példa
# # 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 Példa
# # 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)
Az urllib hibák kezelése: URLHiba és HTTP-hiba
Egy kérés nem mindig sikeres. Amikor valami rosszul sül el, az urllib kivételt generál az adatok visszaadása helyett, ezért fontos kezelni ezeket a hibákat. Az urllib.error modul két fő kivételosztályt definiál.
- HTTP-hiba akkor keletkezik, amikor a szerver hibaállapot-kódot ad vissza, például 404 Nem található vagy 500 Belső szerverhiba. Magában foglalja az állapotkódot és a válasz törzsét.
- URLhiba A hiba akkor jelentkezik, ha a szerver egyáltalán nem érhető el, például rossz domain név vagy internetkapcsolat hiánya miatt. Tartalmaz egy reason attribútumot, amely megmagyarázza a hibát.
Mivel a HTTPError a következő alosztálya: URLHiba, mindig a HTTPError hibát fogd el először, hogy minden hibatípust külön kezeljen a rendszer:
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)
Ezen kivételek kezelése megakadályozza a program összeomlását, és lehetővé teszi a probléma naplózását, a kérés újrapróbálkozását, vagy a gyorsítótárazott adatokhoz való visszatérést.
Hogyan töltsünk le egy fájlt egy URL Urllib használata
Olvasás a URL A memóriába mentés kis oldalak esetén működik, de képek, PDF dokumentumok vagy adathalmazok esetén egyszerűbb a választ közvetlenül lemezre menteni. Az urllib.request modul két egyszerű módszert kínál erre.
Az urlretrieve() függvény letölt egy URL közvetlenül egy helyi fájlba egyetlen sorban:
from urllib.request import urlretrieve urlretrieve("https://www.python.org/static/img/python-logo.png", "logo.png")
A nagyobb kontroll érdekében nyissa meg a URL és írd meg a bájtokat magad. Nyisd meg a helyi fájlt bináris módban, mert az urlopen() bájtokat ad vissza, nem szöveget:
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())
Nagyon nagy fájlok esetén a response.read(8192) függvénnyel cikluson belül kell olvasni és írni, így a teljes fájl soha nem kerül egyszerre a memóriába.
urllib vs. a kéréskönyvtár a következőben: Python
Az urllib a következő része: Python standard könyvtár, így mindenhol telepítés nélkül működik. A harmadik féltől származó kérések könyvtára nincs beépítve, de sok fejlesztő inkább a mindennapi HTTP-munkához használja, mert a szintaxisa rövidebb és olvashatóbb.
A fő különbségek a következők:
- Telepítés: az urllib tartalmazza a következőt: Python, míg a kéréseket a pip használatával kell telepíteni.
- Dekódolás: Az urllib nyers bájtokat ad vissza, amelyeket te magad dekódolsz, míg a kérések automatikusan dekódolják a szöveget és a JSON-t.
- Kényelem: A kérések kevesebb kóddal kezelik a munkameneteket, a sütiket és az egyéni fejléceket.
- Függőségek: Az urllib semmit sem ad hozzá, míg a kérések az alatta lévő urllib3-ra támaszkodnak.
Válaszd az urllib-t, ha nulla függőséget szeretnél, vagy csak egy gyors, egyszeri kérésre van szükséged. Válassz kéréseket nagyobb projektekhez, amelyek hitelesítést, munkameneteket vagy gyakori API-hívásokat tartalmaznak. Mindkettő ugyanazokat az alapul szolgáló HTTP-kéréseket küldi, így a döntés a kényelemről vagy egy kisebb függőségi listáról szól.


