Maison >développement back-end >Tutoriel Python >Comment utiliser le module urllib pour les opérations d'URL dans Python 3.x

Comment utiliser le module urllib pour les opérations d'URL dans Python 3.x

PHPz
PHPzoriginal
2023-07-31 18:06:23730parcourir

Comment utiliser le module urllib pour les opérations d'URL dans Python 3.x

Introduction

Lors du développement de réseaux, nous devons souvent traiter des URL. Python fournit le module urllib, dans lequel le sous-module urllib.request peut facilement effectuer des opérations d'URL. Cet article explique comment utiliser urllib pour ouvrir, lire, télécharger, télécharger et autres opérations d'URL.

Fonctionnalité de base du module urllib.request

Le module urllib.request fournit certaines fonctions pour interagir avec les URL. Les fonctions couramment utilisées sont :

  • urlopen(url, data=None, timeout=socket._GLOBAL_DEFAULT_TIMEOUT, *, cafile=None, capath=None, cadefault=False, context=None) : Ouvrir un URL et renvoie un objet de type fichier. Les paramètres facultatifs peuvent spécifier les données POST, le délai d'attente, le certificat et d'autres informations.
  • 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) : Téléchargez le contenu de l'URL dans le fichier spécifié.

urlopen(url, data=None) et urlretrieve(url) sont tous deux synchrones et bloqueront le processus jusqu'à ce que l'opération soit terminée.

Utilisez urllib.request pour ouvrir une URL

Ce qui suit est un exemple simple montrant comment utiliser urlopen pour ouvrir une URL et lire le contenu de la page Web.

rrreee🎜Dans cet exemple, nous importons d'abord le module urllib.request. Ensuite, nous définissons une URL, qui est l'adresse d'une page Web qui doit être ouverte. Ensuite, utilisez la fonction urlopen pour ouvrir l'URL et attribuer l'objet de type fichier renvoyé à la variable response. 🎜🎜Utilisez la fonction response.read() pour lire le contenu renvoyé par l'URL. Pour gérer correctement les encodages de caractères, nous utilisons decode('utf-8') pour décoder le contenu en chaîne. Enfin, nous imprimons la chaîne résultante. 🎜🎜Télécharger des fichiers🎜🎜Ensuite, nous montrerons comment télécharger des fichiers à l'aide de la fonction urlretrieve. 🎜rrreee🎜Dans cet exemple, nous importons également d'abord le module urllib.request. Ensuite, nous définissons une URL de fichier qui doit être téléchargé et l'enregistrons dans la variable url. Ensuite, nous définissons le nom du fichier à enregistrer après le téléchargement et l'enregistrons dans la variable filename. 🎜🎜Enfin, nous utilisons la fonction urlretrieve pour télécharger et enregistrer le fichier dans l'URL sous le nom de fichier spécifié. Une fois le téléchargement terminé, nous imprimons un message d'invite. 🎜🎜Utiliser la requête POST🎜🎜En plus d'utiliser la requête GET pour ouvrir l'URL, nous devons parfois également utiliser la requête POST. Vous trouverez ci-dessous un exemple de code utilisant une requête POST. 🎜rrreee🎜Dans cet exemple, nous avons également importé les modules urllib.request et urllib.parse. Nous avons défini une URL qui nécessite une requête POST. Ensuite, nous définissons les données pour la requête POST, les encodons au format URL à l'aide de la fonction urlendcode et les convertissons en flux d'octets. 🎜🎜Enfin, nous utilisons la fonction urlopen et spécifions l'URL et les données demandées. De même, nous lisons le contenu renvoyé et l’imprimons. 🎜🎜Utiliser un proxy🎜🎜Dans l'accès au réseau, nous devons parfois utiliser un proxy. Vous trouverez ci-dessous un exemple de code utilisant un proxy. 🎜rrreee🎜Dans cet exemple, nous définissons une URL et l'adresse du proxy. Ensuite, nous utilisons la fonction urllib.request.ProxyHandler pour créer un gestionnaire de proxy et transmettre le proxy. Nous créons ensuite un ouvreur personnalisé à l'aide de la fonction urllib.request.build_opener et définissons le processeur proxy comme paramètre. 🎜🎜Enfin, nous utilisons la fonction urllib.request.install_opener pour installer l'ouvreur personnalisé en tant qu'ouvreur global. De cette façon, chaque urlopen utilisera notre ouvreur personnalisé pour ouvrir l'URL. 🎜🎜Résumé🎜🎜Cet article explique comment utiliser le module urllib pour les opérations d'URL dans Python 3.x. Nous avons montré, à l'aide d'un exemple de code, comment ouvrir et lire le contenu d'une URL, ainsi que comment télécharger des fichiers, utiliser des requêtes POST, utiliser des proxys et d'autres opérations. En développement réel, vous pouvez utiliser les fonctions fournies par le module urllib pour effectuer des opérations d'URL plus complexes en fonction de besoins spécifiques. 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn