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.

  • 🔘 Standart kütüphane: urllib, aşağıdaki özelliklere sahip gemilerle birlikte gelir: Python ve istek, hata, ayrıştırma ve robotparser modüllerini bir araya getirir. URL görevler.
  • ☑️ Bir açın URL: `urllib.request.urlopen()` fonksiyonu bir bağlantı açar ve `getcode()` fonksiyonu 200 gibi HTTP durum kodunu döndürür.
  • Yanıtı okuyun: `read()` metodu ham baytları döndürür; `decode("utf-8")` ise bunları okunabilir metne dönüştürür.
  • 🧪 Hataları ele alın: HTTPError'ı yakala ve URLurllib.error'dan kaynaklanan hata nedeniyle başarısız istekler programın çökmesine neden olmaz.
  • Dosyaları indir: urlretrieve() fonksiyonu herhangi bir şeyi kaydeder. URL Doğrudan diske kaydeder, resimler, PDF'ler ve veri kümeleri için idealdir.
  • 🤖 Yapay zekâya hazır: urllib, makine öğrenimi modellerini ve yapay zeka süreçlerini besleyen veri kümelerini ve API verilerini getirir.

Python Urllib kullanarak İnternet Erişimi

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

Açılış URL Urllib kullanarak

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

HTML dosyasından URL in Python

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

SSS

`urlopen()` genellikle bir `http.client.HTTPResponse` olan bir HTTP yanıt nesnesi döndürür. Ham baytları almak için `read()`, durum kodunu okumak için `getcode()` ve içerik türü ve uzunluğu gibi meta verileri incelemek için `headers` veya `info()` yöntemlerini çağırırsınız.

urllib2 şuna aitti: Python 2. içinde Python 3. Yeniden düzenlendi: özellikleri, açılış için urllib.request'e ayrıldı. URLİstisnalar için s ve urllib.error kullanılır. Code urllib2 için yazılan kod, urllib.request'i içe aktaracak şekilde güncellenmelidir.

`read()` fonksiyonu, `urlopen()` fonksiyonu kodlamayı önceden bilmediği için dize değil, bayt döndürür. `decode("utf-8")` çağrısı, bu baytları okunabilir metne dönüştürerek HTML veya JSON içeriğini yazdırmanıza, aramanıza veya ayrıştırmanıza olanak tanır.

Açın URL `urlopen()` ile baytları okuyun, kodlarını çözün, ardından `json` modülü ile ayrıştırın: `json.loads(response.read().decode(“utf-8”))`. Bu, bir sonuç döndürür. Python Doğrudan kullanabileceğiniz sözlük veya liste; bu, web API'lerini çağırırken yaygın bir uygulamadır.

Sarın URL `urllib.request.Request` nesnesinde, isteği açmadan önce `request.add_header(“User-Agent”, “Mozilla/5.0”)` başlığını ekleyin ve ardından isteği `urlopen()` fonksiyonuna iletin. Özel başlıklar, sunucu varsayılan başlıkları engellediğinde yardımcı olur. Python kullanıcı aracısı

Evet. urllib, web API'lerinden veri kümelerini, CSV dosyalarını ve JSON'u çekebilir; siz de bunları çözüp pandas veya NumPy'ye yükleyebilirsiniz. Bu, makine öğrenimi işlem hattına eğitim verilerini çekmenin hafif ve bağımlılık gerektirmeyen bir yoludur.

Evet. GitHub Copilot, urlopen() çağrıları, Request nesneleri ve try/except hata işleme gibi yaygın urllib kalıplarını otomatik olarak tamamlar. Bu, tekrarlayan kod yazma işlemlerini hızlandırır, ancak yine de doğrulamanız gerekir. URLYapay zekâ asistanı, başlıklar, istisna işleme ve diğer konuları ele almayı öneriyor.

Parametrelerinizi urllib.parse.urlencode() ile kodlayın, encode() ile baytlara dönüştürün ve ardından bunları urlopen() fonksiyonuna veya bir Request nesnesine data argümanı olarak iletin. Data sağlamak, urllib'in GET isteği yerine otomatik olarak POST isteği göndermesini sağlar.

Bu yazıyı şu şekilde özetleyin: