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.

  • 🔘 Standardteek: urllib on kaasas Python ja koondab päringu-, vea-, parsimise- ja robotparseri moodulid URL ülesanded.
  • ☑️ Avatud URL: Funktsioon urllib.request.urlopen() avab ühenduse ja getcode() tagastab HTTP oleku, näiteks 200.
  • Loe vastust: Meetod read() tagastab toored baidid, mis decode(“utf-8”) abil teisendatakse loetavaks tekstiks.
  • 🧪 Käitlemisvead: Püüa HTTP-viga ja URLViga failist urllib.error, seega ebaõnnestunud päringud ei põhjusta programmi kunagi krahhi.
  • 🛠️ Laadige failid alla: Funktsioon urlretrieve() salvestab kõik URL otse kettale, ideaalne piltide, PDF-ide ja andmekogumite jaoks.
  • 🤖 Tehisintellektiga valmis: urllib hangib andmekogumeid ja API-andmeid, mis toidavad masinõppe mudeleid ja tehisintellekti torujuhtmeid.

Python Internetiühendus Urllibi abil

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”.

avatud URL Urllibi kasutamine

  • 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.

HTML-fail saidilt URL in Python

  • 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.

KKK

Funktsioon urlopen() tagastab HTTP vastuseobjekti, tavaliselt vormi http.client.HTTPResponse. Toores baitide saamiseks kutsutakse funktsiooni read(), olekukoodi lugemiseks funktsiooni getcode() ning metaandmete (nt sisu tüüp ja pikkus) kontrollimiseks funktsiooni päised või info().

urllib2 kuulus Python 2. sisse Python 3 see reorganiseeriti: selle funktsioonid jagati avamiseks urllib.request failiks URLs ja urllib.error erandite korral. Code urllib2 jaoks kirjutatud faili tuleb uuendada, et importida hoopis urllib.request.

read() tagastab baidid, mitte stringi, sest urlopen() ei tea kodeeringut ette. Funktsiooni decode(“utf-8”) kutsumine teisendab need baidid loetavaks tekstiks, et saaksite HTML- või JSON-sisu printida, otsida või parsida.

avage URL urlopen() abil loeb baidid, dekodeerib need ja seejärel parsib JSON-mooduliga: json.loads(response.read().decode(“utf-8”)). See tagastab Python sõnastik või loend, mida saate otse kasutada, mis on veebi-API-de kutsumisel tavaline.

Mähi URL urllib.request.Request objektis ja lisa enne avamist päis: request.add_header(“User-Agent”, “Mozilla/5.0”), seejärel edasta päring funktsioonile urlopen(). Kohandatud päised aitavad, kui server blokeerib vaikesätete Python kasutajaagent.

Jah. urllib saab veebiliidestest andmekogumeid, CSV-faile ja JSON-faile hankida, mille seejärel dekodeerite ja laadite pandasse või NumPy-sse. See on kerge ja sõltuvustevaba viis treeningandmete masinõppe torujuhtmesse toomiseks.

Jah. GitHub Copilot täidab automaatselt tavalisi urllib-mustreid, näiteks urlopen()-kõnesid, päringuobjekte ja try/except-veakäsitlust. See kiirendab mallipõhist tööd, aga peaksite siiski kontrollima, et URLs, päised ja tehisintellekti assistendi soovitatud erandite käsitlemine.

Kodeeri oma parameetrid funktsiooniga urllib.parse.urlencode() , teisenda need funktsiooniga encode() baitideks ja seejärel edasta need andmeargumendina funktsioonile urlopen() või Request-objektile. Andmete esitamine paneb urllib automaatselt saatma POST-päringu GET-päringu asemel.

Võta see postitus kokku järgmiselt: