Table des matières
1. Manipulation des URL" > 1. Manipulation des URL
2. Get()" >2. Get()
三、Post()" >三、Post()
🎜Trois, Post()🎜
四、Handler" >四、Handler
5. Résumé " > 5. Résumé
Maison développement back-end Tutoriel Python Un article vous guidera à travers la bibliothèque urllib en Python (URL d'exploitation)

Un article vous guidera à travers la bibliothèque urllib en Python (URL d'exploitation)

Jul 25, 2023 pm 02:08 PM
python urllib


1. Manipulation des URL

urllib fournit une série de fonctions pour manipuler les URL. Classer le contenu associé.


2. Get()

urllib'srequestrequest模块可以非常方便地抓取URL内容,也就是发送一个GET请求到指定的页面,然后返回HTTP的响应:

例如,对豆瓣的URLhttps://api.growingio.com/v2/22c937bbd8ebd703f2d8e9445f7dfd03/web/pv?stm=1593747087078 le module peut facilement capturer le contenu de l'URL, c'est-à-dire envoyer une requête GET à la page spécifiée, puis renvoyer une réponse HTTP : Par exemple, l'URL de Douban

https://api.growingio.com/v2/22c937bbd8ebd703f2d8e9445f7dfd03/web/pv?stm=1593747087078🎜🎜explorez et renvoyez la réponse : 🎜🎜🎜🎜

Un article vous guidera à travers la bibliothèque urllib en Python (URL d'exploitation)

from urllib import request


with request.urlopen('https://api.growingio.com/v2/22c937bbd8ebd703f2d8e9445f7dfd03/web/pv?stm=1593747087078') as f:
    data = f.read()
    print('Status:', f.status, f.reason)
    for k, v in f.getheaders():
        print('%s: %s' % (k, v))
    print('Data:', data.decode('utf-8'))
Copier après la connexion

Vous pouvez voir les en-têtes et les données JSON de la réponse HTTP :

Un article vous guidera à travers la bibliothèque urllib en Python (URL d'exploitation)

Si vous souhaitez simuler le navigateur envoyant une requête GET, vous devez utiliser < code style="box -sizing : border-box;font-family: var(--monospace);vertical-align: initial;border-width: 1px;border-style: solid;border-color: rgb(231, 234 , 237) ; couleur d'arrière-plan : rgb (243, 244, 244) ; rayon de bordure : 3 px ; rembourrage à droite : 2 px ; rembourrage à gauche : 2 px ; taille de police : 0,9 em ; Request对象,通过往Request对象添加HTTP头,就可以把请求伪装成浏览器。例如,模拟iPhone 6去请求豆瓣首页:

from urllib import request


req = request.Request(&#39;http://www.douban.com/&#39;)
req.add_header(&#39;User-Agent&#39;, &#39;Mozilla/6.0 (iPhone; CPU iPhone OS 8_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/8.0 Mobile/10A5376e Safari/8536.25&#39;)
with request.urlopen(req) as f:
    print(&#39;Status:&#39;, f.status, f.reason)
    for k, v in f.getheaders():
        print(&#39;%s: %s&#39; % (k, v))
    print(&#39;Data:&#39;, f.read().decode(&#39;utf-8&#39;))
Copier après la connexion

这样豆瓣会返回适合iPhone的移动版网页:

Un article vous guidera à travers la bibliothèque urllib en Python (URL d'exploitation)


三、Post()

Un article vous guidera à travers la bibliothèque urllib en Python (URL d'exploitation)

如果要以POST发送一个请求,只需要把参数dataobjet, en allant dans Requête</ En ajoutant un en-tête HTTP à l'objet code></span><br/>, vous pouvez déguiser la requête en navigateur. Par exemple, simulez l'iPhone 6 pour demander la page d'accueil de Douban : </p>🎜🎜🎜<div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>from urllib import request, parse print(&amp;#39;Login to weibo.cn...&amp;#39;) #电子邮件 email = input(&amp;#39;Email: &amp;#39;) #密码 passwd = input(&amp;#39;Password: &amp;#39;) #相关的参数 login_data = parse.urlencode([ (&amp;#39;username&amp;#39;, email), (&amp;#39;password&amp;#39;, passwd), (&amp;#39;entry&amp;#39;, &amp;#39;mweibo&amp;#39;), (&amp;#39;client_id&amp;#39;, &amp;#39;&amp;#39;), (&amp;#39;savestate&amp;#39;, &amp;#39;1&amp;#39;), (&amp;#39;ec&amp;#39;, &amp;#39;&amp;#39;), (&amp;#39;pagerefer&amp;#39;, &amp;#39;https://passport.weibo.cn/signin/welcome?entry=mweibo&amp;r=http%3A%2F%2Fm.weibo.cn%2F&amp;#39;) ]) #网址请求 req = request.Request(&amp;#39;https://passport.weibo.cn/sso/login&amp;#39;) req.add_header(&amp;#39;Origin&amp;#39;, &amp;#39;https://passport.weibo.cn&amp;#39;) #构造User-Agent req.add_header(&amp;#39;User-Agent&amp;#39;, &amp;#39;Mozilla/6.0 (iPhone; CPU iPhone OS 8_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/8.0 Mobile/10A5376e Safari/8536.25&amp;#39;) req.add_header(&amp;#39;Referer&amp;#39;, &amp;#39;https://passport.weibo.cn/signin/login?entry=mweibo&amp;res=wel&amp;wm=3349&amp;r=http%3A%2F%2Fm.weibo.cn%2F&amp;#39;) with request.urlopen(req, data=login_data.encode(&amp;#39;utf-8&amp;#39;)) as f: print(&amp;#39;Status:&amp;#39;, f.status, f.reason) for k, v in f.getheaders(): print(&amp;#39;%s: %s&amp;#39; % (k, v)) print(&amp;#39;Data:&amp;#39;, f.read().decode(&amp;#39;utf-8&amp;#39;))</pre><div class="contentsignin">Copier après la connexion</div></div><div class="contentsignin">Copier après la connexion</div></div>🎜<p cid="n13" mdtype="paragraph" style="box-sizing: border-box;line-height: Heherit;orphans: 4 ;marge en haut : 0,8em ;marge en bas : 0,8em;espace blanc : pré-enveloppement;famille de polices : "Open Sans", "Clear Sans", "Helvetica Neue", Helvetica, Arial, "Segoe UI Emoji ", sans-serif;font-size: 16px;text-align: start;">🎜De cette façon, Douban renverra la version mobile de la page Web adaptée à l'iPhone : 🎜🎜🎜🎜<img src="/static/imghw/default1.png" data-src="https://img.php.cn/upload/article/001/272/559/95e6e8965dd5ac2b6231e469adf6c889-4.png" class="lazy"/ alt="Un article vous guidera à travers la bibliothèque urllib en Python (URL d'exploitation)" >🎜🎜🎜🎜<h2 id="Trois-Post">🎜Trois, Post()🎜</h2>🎜<img src="/static/imghw/default1.png" data-src="https://img.php.cn/upload/article/001/272/559/95e6e8965dd5ac2b6231e469adf6c889-4.png" class="lazy"/ alt="Un article vous guidera à travers la bibliothèque urllib en Python (URL d'exploitation)" >🎜<p cid="n16" mdtype="paragraph" style="max-width:90%"Open Sans", "Clear Sans", "Helvetica Neue", Helvetica, Arial, "Segoe UI Emoji", sans-serif;font-size: 16px ;text-align: start;">🎜Si vous souhaitez envoyer une requête avec POST, il vous suffit de mettre les paramètres 🎜🎜<code style="box-sizing: border-box ;font-family: var(--monospace);vertical-align: initial;border-width: 1px;border-style: solid;border-color: rgb(231, 234, 237);background-color: rgb(243 , 244, 244);border-radius : 3px;padding- right : 2px;padding-left : 2px;font-size : 0.9em;">data🎜🎜 est transmis en octets. 🎜🎜🎜

模拟一个微博登录,先读取登录的邮箱和口令,然后按照weibo.cn的登录页的格式以username=xxx&password=xxx的编码传入:

Un article vous guidera à travers la bibliothèque urllib en Python (URL d'exploitation)

from urllib import request, parse


print(&#39;Login to weibo.cn...&#39;)
#电子邮件
email = input(&#39;Email: &#39;)
#密码
passwd = input(&#39;Password: &#39;)
#相关的参数
login_data = parse.urlencode([
    (&#39;username&#39;, email),
    (&#39;password&#39;, passwd),
    (&#39;entry&#39;, &#39;mweibo&#39;),
    (&#39;client_id&#39;, &#39;&#39;),
    (&#39;savestate&#39;, &#39;1&#39;),
    (&#39;ec&#39;, &#39;&#39;),
    (&#39;pagerefer&#39;, &#39;https://passport.weibo.cn/signin/welcome?entry=mweibo&r=http%3A%2F%2Fm.weibo.cn%2F&#39;)
])
#网址请求
req = request.Request(&#39;https://passport.weibo.cn/sso/login&#39;)
req.add_header(&#39;Origin&#39;, &#39;https://passport.weibo.cn&#39;)
#构造User-Agent
req.add_header(&#39;User-Agent&#39;, &#39;Mozilla/6.0 (iPhone; CPU iPhone OS 8_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/8.0 Mobile/10A5376e Safari/8536.25&#39;)
req.add_header(&#39;Referer&#39;, &#39;https://passport.weibo.cn/signin/login?entry=mweibo&res=wel&wm=3349&r=http%3A%2F%2Fm.weibo.cn%2F&#39;)


with request.urlopen(req, data=login_data.encode(&#39;utf-8&#39;)) as f:
    print(&#39;Status:&#39;, f.status, f.reason)
    for k, v in f.getheaders():
        print(&#39;%s: %s&#39; % (k, v))
    print(&#39;Data:&#39;, f.read().decode(&#39;utf-8&#39;))
Copier après la connexion
Copier après la connexion

如果登录成功,获得的响应如下:

Un article vous guidera à travers la bibliothèque urllib en Python (URL d'exploitation)

如果登录失败,获得的响应如下:

Un article vous guidera à travers la bibliothèque urllib en Python (URL d'exploitation)


四、Handler

如果还需要更复杂的控制,比如通过一个Proxy去访问网站,需要利用ProxyHandler来处理,示例代码如下:

import urllib.request


# 构建了两个代理Handler,一个有代理IP,一个没有代理IP


httpproxy_handler = urllib.request.ProxyHandler({"https": "27.191.234.69:9999"})


nullproxy_handler = urllib.request.ProxyHandler({})


# 定义一个代理开关


proxySwitch = True 


# 通过 urllib.request.build_opener()方法使用这些代理Handler对象,创建自定义opener对象


# 根据代理开关是否打开,使用不同的代理模式


if proxySwitch:


    opener = urllib.request.build_opener(httpproxy_handler)
else:
    opener = urllib.request.build_opener(nullproxy_handler)




request = urllib.request.Request("http://www.baidu.com/") 


# 1. 如果这么写,只有使用opener.open()方法发送请求才使用自定义的代理,而urlopen()则不使用自定义代理。


response = opener.open(request)


# 2. 如果这么写,就是将opener应用到全局,之后所有的,不管是opener.open()还是urlopen() 发送请求,都将使用自定义代理。


# urllib.request.install_opener(opener)


# response = urllib.request.urlopen(request)




# 获取服务器响应内容


html = response.read().decode("utf-8")
  
# 打印结果


print(html)
Copier après la connexion

如果代理成功返回网址的信息。

Un article vous guidera à travers la bibliothèque urllib en Python (URL d'exploitation)

Si l'URL ou l'adresse proxy est erronée, revenez à l'interface ci-dessous.

Un article vous guidera à travers la bibliothèque urllib en Python (URL d'exploitation)


5. Résumé

L'utilisation du langage Python peut aider tout le monde à mieux apprendre Python. La fonction fournie par urllib est d'utiliser des programmes pour effectuer diverses requêtes HTTP. Si vous souhaitez simuler un navigateur pour remplir une fonction spécifique, vous devez déguiser la demande en navigateur. La méthode de camouflage consiste d'abord à surveiller les requêtes envoyées par le navigateur, puis à les camoufler en fonction de l'en-tête de requête du navigateur. L'en-tête User-Agent est utilisé pour identifier le navigateur.

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 de ce site Web
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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

PHP et Python: exemples de code et comparaison PHP et Python: exemples de code et comparaison Apr 15, 2025 am 12:07 AM

PHP et Python ont leurs propres avantages et inconvénients, et le choix dépend des besoins du projet et des préférences personnelles. 1.Php convient au développement rapide et à la maintenance des applications Web à grande échelle. 2. Python domine le domaine de la science des données et de l'apprentissage automatique.

Python vs JavaScript: communauté, bibliothèques et ressources Python vs JavaScript: communauté, bibliothèques et ressources Apr 15, 2025 am 12:16 AM

Python et JavaScript ont leurs propres avantages et inconvénients en termes de communauté, de bibliothèques et de ressources. 1) La communauté Python est amicale et adaptée aux débutants, mais les ressources de développement frontal ne sont pas aussi riches que JavaScript. 2) Python est puissant dans les bibliothèques de science des données et d'apprentissage automatique, tandis que JavaScript est meilleur dans les bibliothèques et les cadres de développement frontaux. 3) Les deux ont des ressources d'apprentissage riches, mais Python convient pour commencer par des documents officiels, tandis que JavaScript est meilleur avec MDNWEBDOCS. Le choix doit être basé sur les besoins du projet et les intérêts personnels.

Comment exécuter des programmes dans Terminal Vscode Comment exécuter des programmes dans Terminal Vscode Apr 15, 2025 pm 06:42 PM

Dans VS Code, vous pouvez exécuter le programme dans le terminal via les étapes suivantes: Préparez le code et ouvrez le terminal intégré pour vous assurer que le répertoire de code est cohérent avec le répertoire de travail du terminal. Sélectionnez la commande Run en fonction du langage de programmation (tel que Python de Python your_file_name.py) pour vérifier s'il s'exécute avec succès et résoudre les erreurs. Utilisez le débogueur pour améliorer l'efficacité du débogage.

Le code Visual Studio peut-il être utilisé dans Python Le code Visual Studio peut-il être utilisé dans Python Apr 15, 2025 pm 08:18 PM

VS Code peut être utilisé pour écrire Python et fournit de nombreuses fonctionnalités qui en font un outil idéal pour développer des applications Python. Il permet aux utilisateurs de: installer des extensions Python pour obtenir des fonctions telles que la réalisation du code, la mise en évidence de la syntaxe et le débogage. Utilisez le débogueur pour suivre le code étape par étape, trouver et corriger les erreurs. Intégrez Git pour le contrôle de version. Utilisez des outils de mise en forme de code pour maintenir la cohérence du code. Utilisez l'outil de liaison pour repérer les problèmes potentiels à l'avance.

Explication détaillée du principe docker Explication détaillée du principe docker Apr 14, 2025 pm 11:57 PM

Docker utilise les fonctionnalités du noyau Linux pour fournir un environnement de fonctionnement d'application efficace et isolé. Son principe de travail est le suivant: 1. Le miroir est utilisé comme modèle en lecture seule, qui contient tout ce dont vous avez besoin pour exécuter l'application; 2. Le Système de fichiers Union (UnionFS) empile plusieurs systèmes de fichiers, ne stockant que les différences, l'économie d'espace et l'accélération; 3. Le démon gère les miroirs et les conteneurs, et le client les utilise pour l'interaction; 4. Les espaces de noms et les CGROUP implémentent l'isolement des conteneurs et les limitations de ressources; 5. Modes de réseau multiples prennent en charge l'interconnexion du conteneur. Ce n'est qu'en comprenant ces concepts principaux que vous pouvez mieux utiliser Docker.

L'extension VScode est-elle malveillante? L'extension VScode est-elle malveillante? Apr 15, 2025 pm 07:57 PM

Les extensions de code vs posent des risques malveillants, tels que la cachette de code malveillant, l'exploitation des vulnérabilités et la masturbation comme des extensions légitimes. Les méthodes pour identifier les extensions malveillantes comprennent: la vérification des éditeurs, la lecture des commentaires, la vérification du code et l'installation avec prudence. Les mesures de sécurité comprennent également: la sensibilisation à la sécurité, les bonnes habitudes, les mises à jour régulières et les logiciels antivirus.

Peut-on exécuter le code sous Windows 8 Peut-on exécuter le code sous Windows 8 Apr 15, 2025 pm 07:24 PM

VS Code peut fonctionner sur Windows 8, mais l'expérience peut ne pas être excellente. Assurez-vous d'abord que le système a été mis à jour sur le dernier correctif, puis téléchargez le package d'installation VS Code qui correspond à l'architecture du système et l'installez comme invité. Après l'installation, sachez que certaines extensions peuvent être incompatibles avec Windows 8 et doivent rechercher des extensions alternatives ou utiliser de nouveaux systèmes Windows dans une machine virtuelle. Installez les extensions nécessaires pour vérifier si elles fonctionnent correctement. Bien que le code VS soit possible sur Windows 8, il est recommandé de passer à un système Windows plus récent pour une meilleure expérience de développement et une meilleure sécurité.

Python: automatisation, script et gestion des tâches Python: automatisation, script et gestion des tâches Apr 16, 2025 am 12:14 AM

Python excelle dans l'automatisation, les scripts et la gestion des tâches. 1) Automatisation: La sauvegarde du fichier est réalisée via des bibliothèques standard telles que le système d'exploitation et la fermeture. 2) Écriture de script: utilisez la bibliothèque PSUTIL pour surveiller les ressources système. 3) Gestion des tâches: utilisez la bibliothèque de planification pour planifier les tâches. La facilité d'utilisation de Python et la prise en charge de la bibliothèque riche en font l'outil préféré dans ces domaines.

See all articles