Python Urllib.Request ve urlopen() kullanarak İnternet Erişimi
⚡ Akıllı Özet
urllib standarttır. Python İnternet verilerine erişim sağlayan ve programların açılmasına olanak tanıyan modül. URL`urllib.request.urlopen()` fonksiyonu bir web adresine bağlanır ve sunucu yanıtını doğrudan okuyarak HTML, JSON veya ikili içerik alır. Python.

Aşağıdaki bölümlerde urllib'in ne olduğu ve nasıl açılacağı açıklanmaktadır. URL HTML kodunu okumayı, hataları nasıl ele alacağınızı, dosyaları nasıl indireceğinizi ve urllib ile requests kütüphanesi arasında nasıl seçim yapacağınızı öğrenin.
urllib nedir?
urllib bir Python açmak için kullanılabilen modül URLs. Yardımcı olmak için fonksiyonlar ve sınıflar tanımlar. URL eylemler.
İle PythonAyrıca internetten XML, HTML ve JSON gibi veri türlerine erişebilir ve bu verileri doğrudan işleyebilirsiniz. Aşağıdaki bölümlerde, web'den veri almanın nasıl yapılacağını göreceğiz. Örneğin, burada bir Guru99 Video URLOna şu şekilde erişebilirsiniz: Pythonve bunun HTML dosyasını yazdırın. URL.
urllib paketi, çeşitli modülleri bir araya getirir: urllib.request dosya açma işlemi için kullanılır. URLİsteklerin oluşturabileceği istisnalar için `urllib.error`, derleme ve ayrıştırma için `urllib.parse` kullanılır. URLs ve urllib.robotparser, robots.txt dosyalarını okumak için kullanılır.
Nasıl Açılır URL Urllib kullanarak
İnternete bağlanmak için kodu çalıştırmadan önce, şunları içe aktarmamız gerekiyor: URL kütüphane modülü veya "urllib".
- URLlib'i içe aktar
- Ana işlevinizi tanımlayın
- webUrl değişkenini bildirin
- Ardından urllib kütüphanesindeki urlopen fonksiyonunu çağırın.
- MKS URL Açılışımız şudur: Guru99 eğitim videosu YouTube
- Ardından, sonuç kodunu yazdırıyoruz.
- Oluşturduğumuz webUrl değişkeni üzerinde getcode fonksiyonunu çağırarak sonuç kodunu elde ederiz.
- Bunu bir dizeye dönüştürüyoruz, böylece "sonuç kodu" dizemizle birleştirilebiliyor.
- Bu, HTTP isteğinin başarıyla işlendiğini gösteren normal bir HTTP kodu olan "200" olacaktır.
Bir kaynaktan HTML dosyası nasıl alınır? URL in Python
Ayrıca, read() fonksiyonunu kullanarak HTML dosyasını okuyabilirsiniz. PythonKodu çalıştırdığınızda, HTML dosyası konsolda görünecektir.
- webUrl değişkeni üzerinde read() fonksiyonunu çağırın.
- `read()` metodu, veri dosyalarının içeriğini okumanıza olanak tanır.
- İçeriğin tamamını okuyun. URL data adlı bir değişkene aktarın.
- Kodu çalıştırın, veriler HTML formatında yazdırılacaktır.
İşte kodun tamamı:
Python 2 Örnek
# # 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 Örnek
# # 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)
urllib Hatalarıyla Nasıl Başa Çıkılır: URLHata ve HTTPError
Bir istek her zaman başarılı olmaz. Bir şeyler ters gittiğinde, urllib veri döndürmek yerine bir istisna fırlatır, bu nedenle bu hataları ele almak önemlidir. urllib.error modülü iki ana istisna sınıfı tanımlar.
- HTTPHatası Bu sinyal, sunucu 404 Bulunamadı veya 500 Dahili Sunucu Hatası gibi bir hata durum kodu döndürdüğünde tetiklenir. Durum kodunu ve yanıt gövdesini içerir.
- URLHata Sunucuya hiç ulaşılamadığında, örneğin yanlış alan adı veya internet bağlantısı olmaması nedeniyle bir hata oluşur. Bu hata, başarısızlığın nedenini açıklayan bir "neden" özniteliği içerir.
Çünkü HTTPError, bir alt sınıfıdır. URLHata durumunda, her hata türünün ayrı ayrı ele alınabilmesi için öncelikle HTTPError'ı yakalayın:
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)
Bu istisnaları ele almak, programınızın çökmesini önler ve sorunu kaydetmenize, isteği yeniden denemenize veya önbelleğe alınmış verilere geri dönmenize olanak tanır.
Bir dosyayı nasıl indirebilirim? URL urllib kullanarak
Bir okuma URL Belleğe kaydetme işlemi küçük sayfalar için işe yarar, ancak resimler, PDF belgeleri veya veri kümeleri için yanıtı doğrudan diske kaydetmek daha kolaydır. urllib.request modülü bunu yapmak için iki basit yol sunar.
urlretrieve() fonksiyonu bir dosyayı indirir. URL Tek bir satırda doğrudan yerel bir dosyaya:
from urllib.request import urlretrieve urlretrieve("https://www.python.org/static/img/python-logo.png", "logo.png")
Daha fazla kontrol için açın URL ve baytları kendiniz yazın. Yerel dosyayı ikili modda açın çünkü urlopen() metin değil bayt döndürür:
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())
Çok büyük dosyalar için, dosyanın tamamının aynı anda bellekte tutulmaması için response.read(8192) kullanarak bir döngü içinde okuma ve yazma işlemi yapın.
urllib ile requests kütüphanesi arasındaki farklar Python
urllib, bunun bir parçasıdır. Python Standart bir kütüphane olduğu için kurulum gerektirmeden her yerde çalışır. Üçüncü taraf requests kütüphanesi yerleşik olarak bulunmamaktadır, ancak birçok geliştirici sözdizimi daha kısa ve daha okunaklı olduğu için günlük HTTP işlerinde bunu tercih etmektedir.
Başlıca farklılıklar:
- Kurulum: urllib, aşağıdaki özelliklere sahip gemilerle birlikte gelir: PythonRequests paketi ise pip ile yüklenmelidir.
- Kod çözme: urllib, sizin kendiniz çözmeniz gereken ham baytlar döndürürken, requests metni ve JSON'u otomatik olarak çözer.
- kolaylık: requests kütüphanesi, oturumları, çerezleri ve özel başlıkları daha az kodla yönetir.
- Bağımlılıklar: urllib hiçbir şey eklemezken, requests altta yatan urllib3'e dayanır.
Bağımlılık gerektirmeyen veya yalnızca hızlı, tek seferlik bir istek gerektiren durumlarda urllib'i tercih edin. Kimlik doğrulama, oturumlar veya sık API çağrıları içeren daha büyük projeler için requests kütüphanesini seçin. Her ikisi de aynı temel HTTP isteklerini gönderir, bu nedenle karar kolaylık ile daha az bağımlılık listesi arasında verilir.


