Python Acces la Internet folosind Urllib.Request și urlopen()
⚡ Rezumat inteligent
urllib este standardul Python modul pentru accesarea datelor de pe internet, permițând deschiderea programelor URLs și preia conținut HTML, JSON sau binar. Funcția urllib.request.urlopen() se conectează la o adresă web și citește răspunsul serverului direct în Python.

Secțiunile de mai jos explică ce este urllib, cum se deschide un fișier URL și cum să citești codul HTML al acestuia și cum să gestionezi erorile, să descarci fișiere și să alegi între urllib și biblioteca de cereri.
Ce este urllib?
urllib este o Python modul care poate fi folosit pentru deschidere URLs. Definește funcții și clase care ajută la URL acțiuni.
cu Python, puteți accesa și recupera date de pe internet, cum ar fi XML, HTML și JSON, și apoi puteți lucra direct cu aceste date. În secțiunile de mai jos, vom vedea cum se recuperează date de pe web. De exemplu, aici folosim un Guru99 video URL, accesați-l folosind Pythonși afișează fișierul HTML al acestuia URL.
Pachetul urllib grupează mai multe module: urllib.request pentru deschidere URLs, urllib.error pentru excepțiile pe care le pot ridica cererile, urllib.parse pentru construire și parsare URLs și urllib.robotparser pentru citirea fișierelor robots.txt.
Cum se deschide URL folosind Urllib
Înainte de a rula codul pentru conectarea la datele de internet, trebuie să importăm URL modul de bibliotecă sau „urllib”.
- Import urllib
- Definiți funcția principală
- Declarați variabila webUrl
- Apoi apelați funcția urlopen din biblioteca urllib
- URL deschidem este Guru99 tutoriale despre YouTube
- În continuare, imprimăm codul rezultat
- Codul rezultat este recuperat prin apelarea funcției getcode pe variabila webUrl pe care am creat-o.
- Conversim asta într-un șir de caractere, astfel încât să poată fi concatenat cu șirul nostru „cod rezultat”.
- Acesta va fi un cod HTTP obișnuit „200”, indicând faptul că solicitarea HTTP a fost procesată cu succes.
Cum se obține un fișier HTML dintr-un URL in Python
De asemenea, puteți citi fișierul HTML folosind funcția read() din PythonCând rulați codul, fișierul HTML va apărea în consolă.
- Apelați funcția read() pe variabila webUrl
- Metoda read() vă permite să citiți conținutul fișierelor de date
- Citiți întregul conținut al URL într-o variabilă numită date
- Rulați codul și acesta va afișa datele în format HTML
Iată codul complet:
Python 2 Exemplu
# # 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 Exemplu
# # 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)
Cum se gestionează erorile urllib: URLEroare și HTTPError
O cerere nu are întotdeauna succes. Când ceva nu merge bine, urllib generează o excepție în loc să returneze date, așa că este important să se gestioneze aceste erori. Modulul urllib.error definește două clase principale de excepții.
- Eroare HTTP este generată atunci când serverul returnează un cod de stare de eroare, cum ar fi 404 Not Found sau 500 Internal Server Error. Aceasta conține codul de stare și corpul răspunsului.
- URLEroare este generată atunci când serverul nu poate fi accesat deloc, de exemplu din cauza unui nume de domeniu greșit sau a lipsei unei conexiuni la internet. Aceasta conține un atribut reason care explică eroarea.
Deoarece HTTPError este o subclasă a URLEroare, detectați întotdeauna mai întâi HTTPError, astfel încât fiecare tip de eroare să fie gestionat separat:
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)
Gestionarea acestor excepții previne blocarea programului și vă permite să înregistrați problema, să reîncercați solicitarea sau să reveniți la datele din cache.
Cum se descarcă un fișier dintr-un URL Folosind urllib
Citirea a URL Salvarea în memorie funcționează pentru pagini mici, dar pentru imagini, documente PDF sau seturi de date este mai ușor să salvați răspunsul direct pe disc. Modulul urllib.request oferă două modalități simple de a face acest lucru.
Funcția urlretrieve() descarcă un URL direct către un fișier local într-o singură linie:
from urllib.request import urlretrieve urlretrieve("https://www.python.org/static/img/python-logo.png", "logo.png")
Pentru mai mult control, deschideți URL și scrieți singuri octeții. Deschideți fișierul local în mod binar deoarece urlopen() returnează octeți, nu text:
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())
Pentru fișiere foarte mari, citiți și scrieți într-o buclă folosind response.read(8192), astfel încât întregul fișier să nu fie niciodată ținut în memorie simultan.
urllib vs. biblioteca de cereri din Python
urllib face parte din Python bibliotecă standard, deci funcționează peste tot fără instalare. Biblioteca de cereri terțe nu este încorporată, dar mulți dezvoltatori o preferă pentru munca HTTP de zi cu zi, deoarece sintaxa sa este mai scurtă și mai ușor de citit.
Principalele diferențe sunt:
- Instalare: urllib este livrat cu Python, în timp ce cererile trebuie instalate cu pip.
- Decodare: urllib returnează octeți bruti pe care îi decodați singuri, în timp ce cererile decodează automat textul și JSON-ul.
- Confort: Request-urile gestionează sesiunile, cookie-urile și anteturile personalizate cu mai puțin cod.
- dependenţe: urllib nu adaugă nimic, în timp ce cererile se bazează pe urllib3 dedesubt.
Alegeți urllib atunci când nu doriți dependențe sau aveți nevoie doar de o solicitare rapidă și unică. Alegeți solicitări pentru proiecte mai mari care implică autentificare, sesiuni sau apeluri API frecvente. Ambele trimit aceleași solicitări HTTP subiacente, așa că decizia se reduce la comoditate față de o listă de dependențe mai mică.


