Heim  >  Artikel  >  Backend-Entwicklung  >  So verwenden Sie das urllib-Modul für URL-Operationen in Python 3.x

So verwenden Sie das urllib-Modul für URL-Operationen in Python 3.x

PHPz
PHPzOriginal
2023-07-31 18:06:23706Durchsuche

So verwenden Sie das urllib-Modul für URL-Operationen in Python 3.x

Einführung

Bei der Netzwerkentwicklung müssen wir häufig URLs verarbeiten. Python stellt das Modul urllib bereit, in dem das Submodul urllib.request bequem URL-Operationen ausführen kann. In diesem Artikel wird erläutert, wie Sie mit urllib URLs öffnen, lesen, herunterladen, hochladen und andere Vorgänge ausführen.

Grundlegende Funktionalität des Moduls urllib.request

Das Modul urllib.request bietet einige Funktionen für die Interaktion mit URLs. Häufig verwendete Funktionen sind:

  • urlopen(url, data=None, timeout=socket._GLOBAL_DEFAULT_TIMEOUT, *, cafile=None, capath=None, cadefault=False, context=None): Öffnen Sie a URL und gibt ein dateiähnliches Objekt zurück. Optionale Parameter können POST-Daten, Timeout, Zertifikat und andere Informationen angeben.
  • 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, filename=None, reporthook=None, data=None): Laden Sie den Inhalt der URL in die angegebene Datei herunter.

urlopen(url, data=None) und urlretrieve(url) sind beide synchron und blockieren den Prozess, bis der Vorgang abgeschlossen ist.

Verwenden Sie urllib.request, um eine URL zu öffnen

Das Folgende ist ein einfaches Beispiel, das zeigt, wie Sie mit urlopen eine URL öffnen und den Inhalt der Webseite lesen.

rrreee🎜In diesem Beispiel importieren wir zuerst das Modul urllib.request. Anschließend definieren wir eine URL, also die Adresse einer Webseite, die geöffnet werden muss. Als nächstes verwenden Sie die Funktion urlopen, um die URL zu öffnen und das zurückgegebene dateiähnliche Objekt der Variablen response zuzuweisen. 🎜🎜Verwenden Sie die Funktion response.read(), um den von der URL zurückgegebenen Inhalt zu lesen. Um Zeichenkodierungen richtig zu handhaben, verwenden wir decode('utf-8'), um den Inhalt in eine Zeichenfolge zu dekodieren. Abschließend drucken wir die resultierende Zeichenfolge aus. 🎜🎜Dateien herunterladen🎜🎜Als nächstes zeigen wir, wie Sie Dateien mit der Funktion urlretrieve herunterladen. 🎜rrreee🎜In diesem Beispiel importieren wir auch zuerst das Modul urllib.request. Anschließend definieren wir eine Datei-URL, die heruntergeladen werden muss, und speichern sie in der Variablen url. Als nächstes definieren wir den Dateinamen, der nach dem Download gespeichert werden soll und speichern ihn in der Variablen filename. 🎜🎜Abschließend verwenden wir die Funktion urlretrieve, um die Datei herunterzuladen und in der URL unter dem angegebenen Dateinamen zu speichern. Nachdem der Download abgeschlossen ist, drucken wir eine Meldung aus. 🎜🎜POST-Anfrage verwenden🎜🎜Zusätzlich zur Verwendung der GET-Anfrage zum Öffnen der URL müssen wir manchmal auch die POST-Anfrage verwenden. Unten finden Sie einen Beispielcode für die Verwendung einer POST-Anfrage. 🎜rrreee🎜In diesem Beispiel haben wir auch die Module urllib.request und urllib.parse importiert. Wir haben eine URL definiert, die eine POST-Anfrage erfordert. Als nächstes definieren wir die Daten für die POST-Anfrage, kodieren sie mit der Funktion urlendcode in das URL-Format und konvertieren sie in einen Byte-Stream. 🎜🎜Abschließend verwenden wir die Funktion urlopen und geben die angeforderte URL und Daten an. Ebenso lesen wir den zurückgegebenen Inhalt und drucken ihn aus. 🎜🎜Verwenden Sie einen Proxy🎜🎜Beim Netzwerkzugriff müssen wir manchmal einen Proxy verwenden. Unten finden Sie einen Beispielcode für die Verwendung eines Proxys. 🎜rrreee🎜In diesem Beispiel definieren wir eine URL und die Adresse des Proxys. Als Nächstes verwenden wir die Funktion urllib.request.ProxyHandler, um einen Proxy-Handler zu erstellen und den Proxy zu übergeben. Anschließend erstellen wir mit der Funktion urllib.request.build_opener einen benutzerdefinierten Öffner und legen den Proxy-Prozessor als Parameter fest. 🎜🎜Abschließend verwenden wir die Funktion urllib.request.install_opener, um den benutzerdefinierten Öffner als globalen Öffner zu installieren. Auf diese Weise verwendet jeder urlopen unseren benutzerdefinierten Öffner, um die URL zu öffnen. 🎜🎜Zusammenfassung🎜🎜In diesem Artikel wird die Verwendung des urllib-Moduls für URL-Operationen in Python 3.x vorgestellt. Wir haben anhand von Beispielcode demonstriert, wie man URL-Inhalte öffnet und liest, wie man Dateien herunterlädt, POST-Anfragen verwendet, Proxys verwendet und andere Vorgänge. In der tatsächlichen Entwicklung können Sie die vom Modul urllib bereitgestellten Funktionen verwenden, um komplexere URL-Vorgänge entsprechend den spezifischen Anforderungen auszuführen. 🎜

Das obige ist der detaillierte Inhalt vonSo verwenden Sie das urllib-Modul für URL-Operationen in Python 3.x. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn