Python Akses Internet menggunakan Urllib.Request dan urlopen()

โšก Ringkasan Cerdas

urllib adalah standar Python Modul untuk mengakses data internet, memungkinkan program untuk dibuka. URLFungsi urllib.request.urlopen() terhubung ke alamat web dan membaca respons server langsung ke dalam URL. Python.

  • ๐Ÿ”˜ Pustaka standar: urllib dilengkapi dengan Python dan menggabungkan modul permintaan, kesalahan, penguraian, dan robotparser untuk URL tugas.
  • โ˜‘๏ธ Buka URL: Fungsi urllib.request.urlopen() membuka koneksi, dan getcode() mengembalikan status HTTP seperti 200.
  • โœ… Bacalah jawabannya: Metode read() mengembalikan byte mentah, yang kemudian diubah oleh decode(โ€œutf-8โ€) menjadi teks yang dapat dibaca.
  • ๐Ÿงช Tangani kesalahan: Tangkap HTTPError dan URLKesalahan dari urllib.error sehingga permintaan yang gagal tidak pernah menyebabkan program berhenti mendadak.
  • ๏ธ Unduh file: Fungsi urlretrieve() menyimpan apa pun URL Langsung ke disk, ideal untuk gambar, PDF, dan kumpulan data.
  • ๐Ÿค– Siap untuk AI: urllib mengambil dataset dan data API yang digunakan sebagai input untuk model pembelajaran mesin dan pipeline AI.

Python Akses Internet menggunakan URLlib

Bagian di bawah ini menjelaskan apa itu urllib, dan bagaimana cara membukanya. URL dan membaca HTML-nya, serta cara menangani kesalahan, mengunduh file, dan memilih antara urllib dan pustaka requests.

Apa itu urllib?

urllib adalah a Python modul yang dapat digunakan untuk membuka URLIni mendefinisikan fungsi dan kelas untuk membantu dalam URL tindakan.

Dengan PythonAnda juga dapat mengakses dan mengambil data dari internet, seperti XML, HTML, dan JSON, lalu mengolah data tersebut secara langsung. Pada bagian di bawah ini, kita akan melihat cara mengambil data dari web. Misalnya, di sini kita menggunakan sebuah Guruvideo 99 URL, akseslah dengan menggunakan Python, dan cetak file HTML ini URL.

Paket urllib mengelompokkan beberapa modul: urllib.request untuk membuka URLs, urllib.error untuk pengecualian yang dapat ditimbulkan oleh permintaan, urllib.parse untuk membangun dan mengurai URLs, dan urllib.robotparser untuk membaca file robots.txt.

Bagaimana cara membuka URL menggunakan Urllib

Sebelum menjalankan kode untuk terhubung ke data internet, kita perlu mengimpornya terlebih dahulu. URL modul pustaka, atau โ€œurllibโ€.

Open URL menggunakan Urllib

  • Impor urllib
  • Tentukan fungsi utama Anda
  • Deklarasikan variabel webUrl
  • Kemudian panggil fungsi urlopen pada pustaka urllib.
  • The URL Kami akan membuka... Guru99 tutorial tentang YouTube
  • Selanjutnya, kita mencetak kode hasilnya.
  • Kode hasil diperoleh dengan memanggil fungsi getcode pada variabel webUrl yang telah kita buat.
  • Kita mengubahnya menjadi string, sehingga dapat digabungkan dengan string "kode hasil" kita.
  • Ini akan berupa kode HTTP biasa "200", yang menunjukkan bahwa permintaan HTTP telah diproses dengan sukses.

Cara Mendapatkan File HTML dari URL in Python

Anda juga dapat membaca file HTML dengan menggunakan fungsi read() di PythonSaat Anda menjalankan kode tersebut, file HTML akan muncul di konsol.

berkas HTML dari URL in Python

  • Panggil fungsi read() pada variabel webUrl.
  • Metode read() memungkinkan Anda untuk membaca isi file data.
  • Bacalah seluruh isi URL ke dalam variabel bernama data
  • Jalankan kode tersebut dan data akan dicetak dalam format HTML.

Berikut kode lengkapnya:

Python 2 Contoh

#  
# 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 Contoh

#
# 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)

Cara Menangani Kesalahan urllib: URLKesalahan dan HTTPError

Permintaan tidak selalu berhasil. Ketika terjadi kesalahan, urllib akan melempar exception alih-alih mengembalikan data, jadi penting untuk menangani kesalahan ini. Modul urllib.error mendefinisikan dua kelas exception utama.

  • HTTPError Pesan ini muncul ketika server mengembalikan kode status kesalahan, seperti 404 Not Found atau 500 Internal Server Error. Pesan ini membawa kode status dan isi respons.
  • URLerror Pengecualian ini muncul ketika server sama sekali tidak dapat dijangkau, misalnya karena nama domain yang salah atau tidak ada koneksi internet. Pengecualian ini membawa atribut alasan yang menjelaskan kegagalan tersebut.

Karena HTTPError adalah subkelas dari URLKesalahan, selalu tangkap HTTPError terlebih dahulu agar setiap jenis kesalahan ditangani secara terpisah:

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)

Menangani pengecualian ini mencegah program Anda mengalami kerusakan dan memungkinkan Anda untuk mencatat masalah, mencoba kembali permintaan, atau menggunakan data yang tersimpan dalam cache.

Cara Mengunduh File dari URL Menggunakan urllib

Membaca a URL Menyimpan ke memori berfungsi untuk halaman kecil, tetapi untuk gambar, dokumen PDF, atau kumpulan data, lebih mudah untuk menyimpan respons langsung ke disk. Modul urllib.request menawarkan dua cara sederhana untuk melakukan ini.

Fungsi urlretrieve() mengunduh sebuah URL langsung ke file lokal dalam satu baris:

from urllib.request import urlretrieve

urlretrieve("https://www.python.org/static/img/python-logo.png", "logo.png")

Untuk kontrol lebih lanjut, buka URL dan tulis sendiri byte-nya. Buka file lokal dalam mode biner karena urlopen() mengembalikan byte, bukan teks:

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())

Untuk file yang sangat besar, baca dan tulis dalam sebuah loop menggunakan response.read(8192) sehingga seluruh file tidak pernah disimpan dalam memori sekaligus.

urllib vs. pustaka requests di Python

urllib adalah bagian dari Python Pustaka standar, sehingga berfungsi di mana saja tanpa instalasi. Pustaka requests pihak ketiga tidak terintegrasi, tetapi banyak pengembang lebih menyukainya untuk pekerjaan HTTP sehari-hari karena sintaksnya lebih pendek dan lebih mudah dibaca.

Perbedaan utama adalah:

  • instalasi: urllib dilengkapi dengan Python, sedangkan requests harus diinstal dengan pip.
  • Dekode: urllib mengembalikan byte mentah yang Anda dekode sendiri, sementara requests mendekode teks dan JSON secara otomatis.
  • Kenyamanan: requests menangani sesi, cookie, dan header khusus dengan kode yang lebih sedikit.
  • Dependensi: urllib tidak menambahkan apa pun, sedangkan requests mengandalkan urllib3 di bawahnya.

Pilih urllib jika Anda menginginkan nol dependensi atau hanya membutuhkan permintaan cepat dan sekali jalan. Pilih requests untuk proyek yang lebih besar yang melibatkan otentikasi, sesi, atau panggilan API yang sering. Keduanya mengirimkan permintaan HTTP yang sama, jadi keputusannya bergantung pada kenyamanan versus daftar dependensi yang lebih kecil.

Pertanyaan Umum Demo Slot

urlopen() mengembalikan objek respons HTTP, biasanya http.client.HTTPResponse. Anda memanggil read() untuk mendapatkan byte mentah, getcode() untuk membaca kode status, dan headers atau info() untuk memeriksa metadata seperti tipe konten dan panjangnya.

urllib2 milik Python 2. di Python 3. Itu diorganisasi ulang: fitur-fiturnya dipisahkan menjadi urllib.request untuk pembukaan. URLGunakan s dan urllib.error untuk pengecualian. Code Kode yang ditulis untuk urllib2 harus diperbarui agar mengimpor urllib.request sebagai gantinya.

Fungsi `read()` mengembalikan byte, bukan string, karena `urlopen()` tidak mengetahui pengkodean sebelumnya. Memanggil `decode(โ€œutf-8โ€)` mengubah byte tersebut menjadi teks yang dapat dibaca sehingga Anda dapat mencetak, mencari, atau mengurai konten HTML atau JSON.

Buka URL Dengan urlopen(), baca byte-nya, dekode, lalu uraikan dengan modul json: json.loads(response.read().decode(โ€œutf-8โ€)). Ini mengembalikan sebuah Python kamus atau daftar yang dapat Anda gunakan secara langsung, yang umum dilakukan saat memanggil API web.

Bungkus URL Dalam objek urllib.request.Request, tambahkan header sebelum membukanya: request.add_header(โ€œUser-Agentโ€, โ€œMozilla/5.0โ€), lalu teruskan permintaan ke urlopen(). Header kustom membantu ketika server memblokir permintaan default. Python Agen pengguna.

Ya. urllib dapat mengambil dataset, file CSV, dan JSON dari API web, yang kemudian Anda dekode dan muat ke dalam pandas atau NumPy. Ini adalah cara yang ringan dan tanpa dependensi untuk memasukkan data pelatihan ke dalam pipeline pembelajaran mesin.

Ya. GitHub Copilot melengkapi secara otomatis pola urllib umum seperti panggilan urlopen(), objek Request, dan penanganan kesalahan try/except. Ini mempercepat penulisan kode berulang, tetapi Anda tetap harus memverifikasinya. URLAsisten AI menyarankan penanganan pengecualian, termasuk header dan penanganan pengecualian.

Encode parameter Anda dengan urllib.parse.urlencode(), konversikan ke byte dengan encode(), lalu teruskan sebagai argumen data ke urlopen() atau objek Request. Memberikan data secara otomatis membuat urllib mengirimkan permintaan POST, bukan permintaan GET.

Ringkaslah postingan ini dengan: