Maison développement back-end Tutoriel Python [Python] Web Crawler (4) : Introduction et applications pratiques d'Opener et de Handler

[Python] Web Crawler (4) : Introduction et applications pratiques d'Opener et de Handler

Jan 21, 2017 pm 01:50 PM

Avant de commencer le contenu suivant, expliquons d'abord les deux méthodes dans urllib2 : info et geturl

La réponse de l'objet de réponse (ou instance HTTPError) renvoyée par urlopen a deux méthodes très utiles info() et geturl( )

1.geturl() :

Ceci renvoie la véritable URL obtenue. Ceci est très utile car urlopen (ou celle utilisée par l'objet opener) peut avoir des redirections. L'URL obtenue peut être différente de l'URL de la demande.

Prenons comme exemple un lien hypertexte dans Renren,


Nous construisons un urllib2_test10.py pour comparer l'URL d'origine et le lien redirigé :

from urllib2 import Request, urlopen, URLError, HTTPError  
  
  
old_url = 'http://rrurl.cn/b1UZuP'  
req = Request(old_url)  
response = urlopen(req)    
print 'Old url :' + old_url  
print 'Real url :' + response.geturl()
Copier après la connexion

Après l'exécution, vous pouvez voir l'URL pointée par le vrai lien :

[Python] Web Crawler (4) : Introduction et applications pratiques dOpener et de Handler

2.info() :

Cela renvoie un objet Un objet dictionnaire qui décrit la situation de la page obtenue. En-têtes généralement spécifiques envoyés par le serveur. Actuellement, une instance de httplib.HTTPMessage.

Les en-têtes classiques incluent "Content-length", "Content-type" et d'autres contenus.


Nous construisons une urllib2_test11.py pour tester l'application de l'info :

from urllib2 import Request, urlopen, URLError, HTTPError  
  
old_url = 'http://www.baidu.com'  
req = Request(old_url)  
response = urlopen(req)    
print 'Info():'  
print response.info()
Copier après la connexion

Les résultats de l'opération sont les suivants, vous pouvez voir la page Informations associées :

[Python] Web Crawler (4) : Introduction et applications pratiques dOpener et de Handler

Parlons de deux concepts importants dans urllib2 : les ouvreurs et les gestionnaires.

1.Openers :

Lorsque vous obtenez une URL, vous utilisez un ouvreur (une instance de urllib2.OpenerDirector).

Normalement, nous utilisons l'ouvreur par défaut : via urlopen.

Mais vous pouvez créer vos propres ouvreurs.

2.Poignées :

Les ouvreurs utilisent des gestionnaires de processeur, et tous les travaux « lourds » sont gérés par les gestionnaires.

Chaque gestionnaire sait comment ouvrir des URL via un protocole spécifique, ou comment gérer différents aspects de l'ouverture d'une URL.

Tels que la redirection HTTP ou les cookies HTTP.


Vous souhaiterez créer un ouvreur si vous souhaitez obtenir des URL avec un gestionnaire spécifique, par exemple obtenir un ouvreur qui gère les cookies, ou obtenir un ouvreur qui ne le fait pas réorienter.


Pour créer un opener, instanciez un OpenerDirector,

puis appelez .add_handler(some_handler_instance).

De même, vous pouvez utiliser build_opener, qui est une fonction plus pratique pour créer des objets d'ouverture. Elle ne nécessite qu'un seul appel de fonction.
build_opener ajoute plusieurs processeurs par défaut, mais fournit un moyen rapide d'ajouter ou de mettre à jour les processeurs par défaut.

Autres gestionnaires que vous souhaiterez peut-être gérer les proxys, la validation et d'autres cas courants mais quelque peu particuliers.


install_opener est utilisé pour créer un ouvreur par défaut (global). Cela signifie que l'appel à urlopen utilisera l'ouvreur que vous avez installé.

L'objet Opener a une méthode open.

Cette méthode peut être utilisée directement pour obtenir des urls comme la fonction urlopen : il n'est généralement pas nécessaire d'appeler install_opener, sauf par commodité.


Après avoir terminé les deux contenus ci-dessus, jetons un coup d'œil au contenu d'authentification de base qui sera utilisé ici.

Authentification de base

Pour démontrer la création et l'installation d'un gestionnaire, nous utiliserons HTTPBasicAuthHandler.

Lorsqu'une vérification de base est requise, le serveur envoie un en-tête (code d'erreur 401) pour demander la vérification. Ceci spécifie le schéma et un « domaine » et ressemble à ceci : Www-authenticate : SCHEME realm="REALM".

Par exemple
Www-authenticate : Basic realm="cPanel Users"

Le client doit utiliser une nouvelle requête et inclure le nom et le mot de passe corrects dans les en-têtes de la requête.

Il s'agit de "l'authentification de base". Afin de simplifier ce processus, nous pouvons créer une instance de HTTPBasicAuthHandler et laisser opener utiliser ce gestionnaire.


HTTPBasicAuthHandler utilise un objet de gestion de mot de passe pour gérer les URL et les domaines afin de mapper les noms d'utilisateur et les mots de passe.

Si vous savez ce qu'est le domaine (dans l'en-tête envoyé depuis le serveur), vous pouvez utiliser HTTPPasswordMgr.


Habituellement, les gens ne se soucient pas de ce qu'est un royaume. Dans ce cas, le HTTPPasswordMgrWithDefaultRealm pratique peut être utilisé.

Cela spécifiera un nom d'utilisateur et un mot de passe par défaut pour votre URL.

Ceci sera fourni lorsque vous fournirez une autre combinaison pour un domaine spécifique.

Nous indiquons cette situation en spécifiant None pour le paramètre realm fourni à add_password.


L'URL de niveau le plus élevé est la première qui nécessite une vérification. Les URL plus profondes que vous transmettez à .add_password() conviendront également.

Après avoir dit tant de bêtises, utilisons un exemple pour démontrer ce qui est dit ci-dessus.


Nous construisons un urllib2_test12.py pour tester l'application d'informations :

# -*- coding: utf-8 -*-  
import urllib2  
  
# 创建一个密码管理者  
password_mgr = urllib2.HTTPPasswordMgrWithDefaultRealm()  
  
# 添加用户名和密码  
  
top_level_url = "http://example.com/foo/"  
  
# 如果知道 realm, 我们可以使用他代替 ``None``.  
# password_mgr.add_password(None, top_level_url, username, password)  
password_mgr.add_password(None, top_level_url,'why', '1223')  
  
# 创建了一个新的handler  
handler = urllib2.HTTPBasicAuthHandler(password_mgr)  
  
# 创建 "opener" (OpenerDirector 实例)  
opener = urllib2.build_opener(handler)  
  
a_url = 'http://www.baidu.com/'  
  
# 使用 opener 获取一个URL  
opener.open(a_url)  
  
# 安装 opener.  
# 现在所有调用 urllib2.urlopen 将用我们的 opener.  
urllib2.install_opener(opener)
Copier après la connexion

Remarque : dans l'exemple ci-dessus, nous fournissons uniquement notre HHTTPasicAuthHandler à build_opener .

Les ouvreurs par défaut ont des gestionnaires normaux : ProxyHandler, UnknownHandler, HTTPHandler, HTTPDefaultErrorHandler, HTTPRedirectHandler, FTPHandler, FileHandler, HTTPErrorProcessor.

Le top_level_url dans le code peut en fait être une URL complète (comprenant "http:", ainsi que le nom d'hôte et le numéro de port facultatif).


Par exemple : http://example.com/.

peut également être une "autorité" (c'est-à-dire un nom d'hôte et éventuellement un numéro de port).

Par exemple : "exemple.com" ou "exemple.com:8080".

Ce dernier contient le numéro de port.

Ce qui précède est le contenu de [Python] Web Crawler (4) : Introduction et exemples d'applications d'Opener et de Handler. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www.php.cn). !


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

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

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)

Comment créer une puissante application de robot d'exploration Web à l'aide de React et Python Comment créer une puissante application de robot d'exploration Web à l'aide de React et Python Sep 26, 2023 pm 01:04 PM

Comment créer une puissante application de robot d'exploration Web à l'aide de React et Python Introduction : Un robot d'exploration Web est un programme automatisé utilisé pour explorer des données Web via Internet. Avec le développement continu d’Internet et la croissance explosive des données, les robots d’exploration Web deviennent de plus en plus populaires. Cet article explique comment utiliser React et Python, deux technologies populaires, pour créer une puissante application de robot d'exploration Web. Nous explorerons les avantages de React en tant que framework front-end et de Python en tant que moteur d'exploration, et fournirons des exemples de code spécifiques. 1. Pour

Développer des robots d'exploration Web et des outils de récupération de données efficaces à l'aide des langages Vue.js et Perl Développer des robots d'exploration Web et des outils de récupération de données efficaces à l'aide des langages Vue.js et Perl Jul 31, 2023 pm 06:43 PM

Utilisez les langages Vue.js et Perl pour développer des robots d'exploration Web et des outils de récupération de données efficaces. Ces dernières années, avec le développement rapide d'Internet et l'importance croissante des données, la demande de robots d'exploration Web et d'outils de récupération de données a également augmenté. Dans ce contexte, c'est un bon choix de combiner le langage Vue.js et Perl pour développer des robots d'exploration Web et des outils de scraping de données efficaces. Cet article expliquera comment développer un tel outil à l'aide du langage Vue.js et Perl, et joindra des exemples de code correspondants. 1. Introduction au langage Vue.js et Perl

Qu'est-ce qu'un robot d'exploration Web Qu'est-ce qu'un robot d'exploration Web Jun 20, 2023 pm 04:36 PM

Un robot d'exploration Web (également connu sous le nom d'araignée Web) est un robot qui recherche et indexe le contenu sur Internet. Essentiellement, les robots d'exploration Web sont chargés de comprendre le contenu d'une page Web afin de le récupérer lorsqu'une requête est effectuée.

Comment écrire un robot d'exploration Web simple en utilisant PHP Comment écrire un robot d'exploration Web simple en utilisant PHP Jun 14, 2023 am 08:21 AM

Un robot d'exploration Web est un programme automatisé qui visite automatiquement les sites Web et en analyse les informations. Cette technologie est de plus en plus courante dans le monde Internet d'aujourd'hui et est largement utilisée dans l'exploration de données, les moteurs de recherche, l'analyse des médias sociaux et d'autres domaines. Si vous souhaitez apprendre à écrire un robot d'exploration Web simple à l'aide de PHP, cet article vous fournira des orientations et des conseils de base. Tout d’abord, vous devez comprendre quelques concepts et techniques de base. Cible d'exploration Avant d'écrire un robot, vous devez sélectionner une cible d'exploration. Il peut s'agir d'un site Web spécifique, d'une page Web spécifique ou de l'intégralité d'Internet.

Explication détaillée de la méthode de requête HTTP du robot d'exploration Web PHP Explication détaillée de la méthode de requête HTTP du robot d'exploration Web PHP Jun 17, 2023 am 11:53 AM

Avec le développement d’Internet, toutes sortes de données deviennent de plus en plus accessibles. En tant qu'outil d'obtention de données, les robots d'exploration Web ont attiré de plus en plus d'attention. Dans les robots d'exploration Web, les requêtes HTTP constituent un lien important. Cet article présentera en détail les méthodes de requête HTTP courantes dans les robots d'exploration Web PHP. 1. Méthode de requête HTTP La méthode de requête HTTP fait référence à la méthode de requête utilisée par le client lors de l'envoi d'une requête au serveur. Les méthodes de requête HTTP courantes incluent GET, POST et PU

Comment utiliser PHP et Swoole pour le développement de robots Web à grande échelle ? Comment utiliser PHP et Swoole pour le développement de robots Web à grande échelle ? Jul 21, 2023 am 09:09 AM

Comment utiliser PHP et Swoole pour le développement de robots Web à grande échelle ? Introduction : Avec le développement rapide d'Internet, le Big Data est devenu l'une des ressources importantes de la société d'aujourd'hui. Afin d’obtenir ces précieuses données, des robots d’exploration Web ont vu le jour. Les robots d'exploration Web peuvent visiter automatiquement divers sites Web sur Internet et en extraire les informations requises. Dans cet article, nous explorerons comment utiliser PHP et l'extension swoole pour développer des robots d'exploration Web efficaces et à grande échelle. 1. Comprendre les principes de base des robots d'exploration Web Les principes de base des robots d'exploration Web sont très simples.

Exemple de développement d'un robot d'exploration Web simple PHP Exemple de développement d'un robot d'exploration Web simple PHP Jun 13, 2023 pm 06:54 PM

Avec le développement rapide d’Internet, les données sont devenues l’une des ressources les plus importantes à l’ère de l’information d’aujourd’hui. En tant que technologie qui obtient et traite automatiquement les données du réseau, les robots d'exploration Web attirent de plus en plus d'attention et d'applications. Cet article explique comment utiliser PHP pour développer un robot d'exploration Web simple et réaliser la fonction d'obtention automatique de données réseau. 1. Présentation de Web Crawler Le robot d'exploration Web est une technologie qui obtient et traite automatiquement les ressources réseau. Son principal processus de travail consiste à simuler le comportement du navigateur, à accéder automatiquement aux adresses URL spécifiées et à extraire toutes les informations.

Notes d'étude PHP : robots d'exploration Web et collecte de données Notes d'étude PHP : robots d'exploration Web et collecte de données Oct 08, 2023 pm 12:04 PM

Notes d'étude PHP : Robot d'exploration Web et collecte de données Introduction : Un robot d'exploration Web est un outil qui explore automatiquement les données d'Internet. Il peut simuler le comportement humain, parcourir les pages Web et collecter les données requises. En tant que langage de script côté serveur populaire, PHP joue également un rôle important dans le domaine des robots d'exploration Web et de la collecte de données. Cet article explique comment écrire un robot d'exploration Web à l'aide de PHP et fournit des exemples de code pratiques. 1. Principes de base des robots d'exploration Web Les principes de base des robots d'exploration Web sont d'envoyer des requêtes HTTP, de recevoir et d'analyser la réponse H du serveur.

See all articles