Maison > développement back-end > Tutoriel Python > tutoriel sur le robot d'exploration Python

tutoriel sur le robot d'exploration Python

巴扎黑
Libérer: 2017-08-15 13:43:09
original
1842 Les gens l'ont consulté

Lorsque nous naviguons sur Internet tous les jours, nous voyons souvent de belles images et nous souhaitons enregistrer et télécharger ces images, ou les utiliser comme fonds d'écran ou comme matériel de conception. L'article suivant vous présentera les informations pertinentes sur l'utilisation de Python pour implémenter le robot d'exploration Web le plus simple. Les amis qui en ont besoin peuvent s'y référer.

Avant-propos

Les robots d'exploration Web (également appelés araignées Web, robots Web, au sein de la communauté FOAF, plus communément appelés robots d'exploration Web) sont un programme ou un script qui capture automatiquement les informations du World Wide Web selon certaines règles. Récemment, je me suis beaucoup intéressé aux robots d'exploration Python. J'aimerais partager mon parcours d'apprentissage ici et accueillir vos suggestions. Nous communiquons les uns avec les autres et progressons ensemble. Sans plus tarder, jetons un œil à l'introduction détaillée :

1. Outils de développement

L'auteur utilise. Le meilleur outil est le sublime text3. Son contenu court et concis (peut-être que les hommes n'aiment pas ce mot) me fascine beaucoup. Son utilisation est recommandée à tout le monde. Bien entendu, si la configuration de votre ordinateur est bonne, pycharm peut vous convenir davantage.

Sublime text3 construit un environnement de développement Python Il est recommandé de consulter cet article :

[sublime construit un environnement de développement Python][http://www.jb51. .net/article/ 51838.htm]

2. Introduction aux robots d'exploration

Comme leur nom l'indique, les robots d'exploration. ramper sur Internet comme des bugs Zhang Dawang. De cette façon, nous pouvons obtenir ce que nous voulons.

Puisque nous voulons explorer Internet, nous devons comprendre l'URL, le nom légal est « Uniform Resource Locator » et le surnom est « lien ». Sa structure se compose principalement de trois parties :

(1) Protocole : tel que le protocole HTTP que nous voyons couramment dans les URL.

(2) Nom de domaine ou adresse IP : Nom de domaine, tel que : www.baidu.com, adresse IP, c'est-à-dire l'IP correspondante après résolution du nom de domaine.

(3) Chemin : répertoire ou fichier, etc.

3. urllib est le robot le plus simple à développer

(1) Introduction à urllib

Module Introduce
urllib.error Exception classes raised by urllib.request.
urllib.parse Parse URLs into or assemble them from components.
urllib.request Extensible library for opening URLs.
urllib.response Response classes used by urllib.
urllib.robotparser Load a robots.txt file and answer questions about fetchability of other URLs.

(2) Développer le robot d'exploration le plus simple

La page d'accueil de Baidu est simple et élégante, ce qui convient très bien à nos robots d'exploration.

Le code du robot est le suivant :


from urllib import request

def visit_baidu():
 URL = "http://www.baidu.com"
 # open the URL
 req = request.urlopen(URL)
 # read the URL 
 html = req.read()
 # decode the URL to utf-8
 html = html.decode("utf_8")
 print(html)

if __name__ == '__main__':
 visit_baidu()
Copier après la connexion

Le résultat est le suivant :


Nous pouvons comparer avec nos résultats en cours d'exécution en cliquant avec le bouton droit sur l'espace vide de la page d'accueil de Baidu pour afficher les éléments de l'évaluation.

Bien sûr, request peut également générer un objet request, qui peut être ouvert à l'aide de la méthode urlopen.

Le code est le suivant :


from urllib import request

def vists_baidu():
 # create a request obkect
 req = request.Request('http://www.baidu.com')
 # open the request object
 response = request.urlopen(req)
 # read the response 
 html = response.read()
 html = html.decode('utf-8')
 print(html)

if __name__ == '__main__':
 vists_baidu()
Copier après la connexion

Le résultat de course est le même qu'avant.

(3) Gestion des erreurs

La gestion des erreurs est gérée via le module urllib Il existe principalement des erreurs URLError et HTTPError, dont l'erreur HTTPError. est une erreur URLError. Les sous-classes de HTTRPError peuvent également être détectées par URLError.

HTTPError peut être détecté via son attribut code.

Le code pour gérer HTTPError est le suivant :


from urllib import request
from urllib import error

def Err():
 url = "https://segmentfault.com/zzz"
 req = request.Request(url)

 try:
 response = request.urlopen(req)
 html = response.read().decode("utf-8")
 print(html)
 except error.HTTPError as e:
 print(e.code)
if __name__ == '__main__':
 Err()
Copier après la connexion

Le résultat de l'exécution est tel qu'indiqué dans la figure :

404 est le code d'erreur imprimé. Vous pouvez Baidu pour obtenir des informations détaillées à ce sujet.

URLError peut être détecté via son attribut Reason.

Le code de chuliHTTPError est le suivant :


from urllib import request
from urllib import error

def Err():
 url = "https://segmentf.com/"
 req = request.Request(url)

 try:
 response = request.urlopen(req)
 html = response.read().decode("utf-8")
 print(html)
 except error.URLError as e:
 print(e.reason)
if __name__ == '__main__':
 Err()
Copier après la connexion

Le résultat de l'exécution est tel qu'indiqué dans la figure :


Étant donné que pour gérer les erreurs, il est préférable d'écrire les deux erreurs dans le code. Après tout, plus le code est détaillé, plus il sera clair. Il convient de noter que HTTPError est une sous-classe de URLError, donc HTTPError doit être placé devant URLError, sinon URLError sera affiché, par exemple 404 étant affiché comme Introuvable.

Le code est le suivant :


from urllib import request
from urllib import error

# 第一种方法,URLErroe和HTTPError
def Err():
 url = "https://segmentfault.com/zzz"
 req = request.Request(url)

 try:
 response = request.urlopen(req)
 html = response.read().decode("utf-8")
 print(html)
 except error.HTTPError as e:
 print(e.code)
 except error.URLError as e:
 print(e.reason)
Copier après la connexion

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!

Étiquettes associées:
source: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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal