Rumah >pembangunan bahagian belakang >Tutorial Python >Cara menggunakan modul urllib untuk operasi URL dalam Python 3.x

Cara menggunakan modul urllib untuk operasi URL dalam Python 3.x

PHPz
PHPzasal
2023-07-31 18:06:23730semak imbas

Cara menggunakan modul urllib untuk operasi URL dalam Python 3.x

Pengenalan

Apabila melakukan pembangunan rangkaian, kita selalunya perlu memproses URL. Python menyediakan modul urllib, di mana submodul urllib.request boleh melaksanakan operasi URL dengan mudah. Artikel ini akan memperkenalkan cara menggunakan urllib untuk membuka, membaca, memuat turun, memuat naik dan operasi URL yang lain.

Kefungsian asas modul urllib.request

urllib.request modul menyediakan beberapa fungsi untuk berinteraksi dengan URL. Fungsi yang biasa digunakan ialah:

  • urlopen(url, data=None, timeout=socket._GLOBAL_DEFAULT_TIMEOUT, *, cafile=None, capath=None, cadefault=False, context=None): Buka a URL dan mengembalikan objek seperti fail. Parameter pilihan boleh menentukan data POST, tamat masa, sijil dan maklumat lain.
  • urlopen(url, data=None, timeout=socket._GLOBAL_DEFAULT_TIMEOUT, *, cafile=None, capath=None, cadefault=False, context=None):打开一个 URL,并返回一个类文件对象。可选参数可以指定 POST 数据、超时时间、证书等信息。
  • urlretrieve(url, filename=None, reporthook=None, data=None):将 URL 的内容下载到指定文件中。
  • urlopen(url, data=None)urlretrieve(url) 都是同步的,会阻塞进程直到操作完成。

使用 urllib.request 打开 URL

下面是一个简单的示例,展示如何使用 urlopen 打开 URL,并读取网页内容。

import urllib.request

url = "https://www.example.com"
response = urllib.request.urlopen(url)
html = response.read().decode('utf-8')

print(html)

在这个例子中,我们首先导入 urllib.request 模块。然后,我们定义了一个 URL,这个 URL 是一个需要打开的网页地址。接下来,使用 urlopen 函数打开这个 URL,并将返回的类文件对象赋值给 response 变量。

使用 response.read() 函数可以读取该 URL 返回的内容。为了正确处理字符编码,我们使用 decode('utf-8') 将内容解码成字符串。最后,我们将得到的字符串打印出来。

下载文件

接下来,我们将演示如何使用 urlretrieve 函数下载文件。

import urllib.request

url = "https://www.example.com/example.png"
filename = "example.png"

urllib.request.urlretrieve(url, filename)
print("文件下载完成")

在这个例子中,我们同样首先导入 urllib.request 模块。然后,我们定义了一个需要下载的文件 URL,并将其保存在变量 url 中。接着,我们定义了下载后保存的文件名,并将其保存在变量 filename 中。

最后,我们使用 urlretrieve 函数,将 URL 中的文件下载并保存为指定的文件名。下载完成后,我们打印出一条提示信息。

使用 POST 请求

除了使用 GET 请求打开 URL,有时我们还需要使用 POST 请求。下面是一个使用 POST 请求的示例代码。

import urllib.request
import urllib.parse

url = "https://www.example.com/example"
data = {"name": "Example", "age": 20}
data = urllib.parse.urlencode(data).encode('utf-8')

response = urllib.request.urlopen(url, data=data)
html = response.read().decode('utf-8')

print(html)

在这个例子中,我们同样导入了 urllib.requesturllib.parse 模块。我们定义了一个 URL,需要使用 POST 请求。接着,我们定义了 POST 请求的数据,使用 urlendcode 函数将其编码为 URL 格式并将其转换为字节流。

最后,我们使用 urlopen 函数,并指定请求的 URL 和数据。同样地,我们读取返回的内容并打印出来。

使用代理

在网络访问中,有时我们需要使用代理。下面是一个使用代理的示例代码。

import urllib.request

url = "https://www.example.com"
proxy = {"http": "http://localhost:8080"}

proxy_handler = urllib.request.ProxyHandler(proxy)
opener = urllib.request.build_opener(proxy_handler)
urllib.request.install_opener(opener)

response = urllib.request.urlopen(url)
html = response.read().decode('utf-8')

print(html)

在这个例子中,我们定义了一个 URL 和代理的地址。接着,我们使用 urllib.request.ProxyHandler 函数创建一个代理处理器,并将代理传入。然后,我们使用 urllib.request.build_opener 函数创建一个自定义的 opener,并将代理处理器设置为其参数。

最后,我们使用 urllib.request.install_opener 函数将自定义的 opener 安装为全局的 opener。这样,每个 urlopenurlretrieve(url, nama fail=Tiada, reporthook=Tiada, data=Tiada): Muat turun kandungan URL ke fail yang ditentukan.

urlopen(url, data=None) dan urlretrieve(url) kedua-duanya adalah segerak dan akan menyekat proses sehingga operasi selesai.

Gunakan urllib.request untuk membuka URL

Berikut ialah contoh mudah yang menunjukkan cara menggunakan urlopen untuk membuka URL dan membaca kandungan halaman web.

rrreee🎜Dalam contoh ini, kami mula-mula mengimport modul urllib.request. Kemudian, kami mentakrifkan URL, iaitu alamat halaman web yang perlu dibuka. Seterusnya, gunakan fungsi urlopen untuk membuka URL dan tetapkan objek seperti fail yang dikembalikan kepada pembolehubah respons. 🎜🎜Gunakan fungsi response.read() untuk membaca kandungan yang dikembalikan oleh URL. Untuk mengendalikan pengekodan aksara dengan betul, kami menggunakan decode('utf-8') untuk menyahkod kandungan menjadi rentetan. Akhirnya, kami mencetak rentetan yang terhasil. 🎜🎜Muat Turun Fail🎜🎜Seterusnya, kami akan menunjukkan cara memuat turun fail menggunakan fungsi urlretrieve. 🎜rrreee🎜Dalam contoh ini, kami juga mengimport modul urllib.request terlebih dahulu. Kemudian, kami mentakrifkan URL fail yang perlu dimuat turun dan menyimpannya dalam url pembolehubah. Seterusnya, kami mentakrifkan nama fail untuk disimpan selepas memuat turun dan menyimpannya dalam pembolehubah nama fail. 🎜🎜Akhir sekali, kami menggunakan fungsi urlretrieve untuk memuat turun dan menyimpan fail dalam URL sebagai nama fail yang ditentukan. Selepas muat turun selesai, kami mencetak mesej segera. 🎜🎜Gunakan permintaan POST🎜🎜Selain menggunakan permintaan GET untuk membuka URL, kadangkala kita juga perlu menggunakan permintaan POST. Di bawah ialah contoh kod menggunakan permintaan POST. 🎜rrreee🎜Dalam contoh ini, kami turut mengimport modul urllib.request dan urllib.parse. Kami telah menentukan URL yang memerlukan permintaan POST. Seterusnya, kami mentakrifkan data untuk permintaan POST, mengekodnya ke dalam format URL menggunakan fungsi urlendcode dan menukarnya menjadi strim bait. 🎜🎜Akhir sekali, kami menggunakan fungsi urlopen dan menentukan URL dan data yang diminta. Begitu juga, kami membaca kandungan yang dikembalikan dan mencetaknya. 🎜🎜Gunakan proksi🎜🎜Dalam akses rangkaian, kadangkala kita perlu menggunakan proksi. Di bawah ialah contoh kod menggunakan proksi. 🎜rrreee🎜Dalam contoh ini, kami mentakrifkan URL dan alamat proksi. Seterusnya, kami menggunakan fungsi urllib.request.ProxyHandler untuk mencipta pengendali proksi dan menghantar proksi. Kami kemudian membuat pembuka tersuai menggunakan fungsi urllib.request.build_opener dan menetapkan pemproses proksi sebagai hujahnya. 🎜🎜Akhir sekali, kami menggunakan fungsi urllib.request.install_opener untuk memasang pembuka tersuai sebagai pembuka global. Dengan cara ini, setiap urlopen akan menggunakan pembuka tersuai kami untuk membuka URL. 🎜🎜Ringkasan🎜🎜Artikel ini memperkenalkan cara menggunakan modul urllib untuk operasi URL dalam Python 3.x. Kami menggunakan kod sampel untuk menunjukkan cara membuka dan membaca kandungan URL, serta cara memuat turun fail, menggunakan permintaan POST, menggunakan proksi dan operasi lain. Dalam pembangunan sebenar, anda boleh menggunakan fungsi yang disediakan oleh modul urllib untuk melaksanakan operasi URL yang lebih kompleks mengikut keperluan khusus. 🎜

Atas ialah kandungan terperinci Cara menggunakan modul urllib untuk operasi URL dalam Python 3.x. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn