1. Qu'est-ce qu'un crawler web ?

Crawler web: Un programme qui récupère automatiquement des informations sur Internet, en capturant pour nous des informations précieuses depuis Internet.

2. Architecture d'un crawler web Python

L’architecture d’un crawler web Python se compose principalement de cinq parties : l’ordonnanceur, le gestionnaire d’URL, le téléchargeur de pages web, l’analyseur de pages web et l’application (les données précieuses récoltées).

  • Ordonnanceur :Équivalent au CPU d’un ordinateur, principalement chargé de coordonner le travail entre le gestionnaire d’URL, le téléchargeur et l’analyseur.
  • Gestionnaire d’URL :Comprend les URL à explorer et les URL déjà explorées, ce qui évite l’exploration en double et l’exploration circulaire des URL. Le gestionnaire d’URL est principalement implémenté de trois manières : en mémoire, en base de données et en base de données de cache.
  • Téléchargeur de pages web :Télécharge une page web en passant une adresse URL, en convertissant la page web en chaîne de caractères. Les téléchargeurs de pages web incluent urllib2 (module de base officiel de Python), avec prise en charge de la connexion, du proxy et des cookies, et requests (paquet tiers).
  • Analyseur de pages web :Analyse une chaîne de page web, en extrayant les informations utiles selon nos besoins, et peut aussi analyser selon la méthode d’analyse par arborescence DOM. Les analyseurs de pages web incluent les expressions régulières (intuitives, convertissant les pages web en chaînes et extrayant des informations précieuses par correspondance floue ; lorsque le document est complexe, cette méthode devient très difficile pour extraire des données), html.parser (intégré à Python), beautifulsoup (plugin tiers qui peut utiliser html.parser ou lxml intégré à Python pour analyser ; il est plus puissant par rapport aux autres méthodes), et lxml (plugin tiers qui peut analyser le XML et le HTML). html.parser, beautifulsoup et lxml analysent tous à l’aide de la méthode par arborescence DOM.
  • Application :Il s’agit d’une application composée de données utiles extraites des pages web.

Le diagramme suivant explique comment l’ordonnanceur coordonne le travail :

3. Trois façons dont urllib2 implémente le téléchargement de pages web

#!/usr/bin/python # -*- coding: UTF-8 -*- import cookielib import urllib2 url = "http://www.baidu.com" response1 = urllib2.urlopen(url) print "Méthode 1" # Obtenir le code d’état ; 200 indique le succès print response1.getcode() # Obtenir la longueur du contenu de la page web print len(response1.read()) print "Méthode 2" request = urllib2.Request(url) # Simuler un navigateur Mozilla pour le crawling request.add_header("user-agent","Mozilla/5.0") response2 = urllib2.urlopen(request) print response2.getcode() print len(response2.read()) print "Méthode 3" cookie = cookielib.CookieJar() # Ajouter la capacité d'urllib2 à gérer les cookies opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie)) urllib2.install_opener(opener) response3 = urllib2.urlopen(url) print response3.getcode() print len(response3.read()) print cookie

4. Installation de la bibliothèque tierce Beautiful Soup

Beautiful Soup: Un plugin Python tiers utilisé pour extraire des données à partir de XML et HTML. Adresse du site officielhttps://www.crummy.com/software/BeautifulSoup/

1. Installer Beautiful Soup

Ouvrez cmd (Invite de commandes), accédez au dossier scripts dans le répertoire d'installation de Python (version Python 2.7), tapez dir pour vérifier si pip.exe existe. Si c'est le cas, vous pouvez utiliser la commande pip intégrée à Python pour installer. Entrez la commande suivante pour installer :

pip install beautifulsoup4

2. Tester si l'installation a réussi

Écrivez un fichier Python et saisissez :

import bs4
print bs4

Exécutez le fichier. S'il produit une sortie normale, l'installation a réussi.

5. Utilisation de Beautiful Soup pour analyser des fichiers HTML

#!/usr/bin/python # -*- coding: UTF-8 -*- import re from bs4 import BeautifulSoup html_doc = """ <html><head><title>L'histoire du Loir</title></head> <body> <p class="title"><b>L'histoire du Loir</b></p> <p class="story">Il était une fois trois petites sœurs; et leurs noms étaient <a href="http://example.com/elsie" class="sister" id="link1">Elsie</a>, <a href="http://example.com/lacie" class="sister" id="link2">Lacie</a> et <a href="http://example.com/tillie" class="sister" id="link3">Tillie</a>; et elles vivaient au fond d'un puits.</p> <p class="story">...</p> """ # Créer un objet d'analyse BeautifulSoup soup = BeautifulSoup(html_doc,"html.parser",from_encoding="utf-8") # Obtenir tous les liens links = soup.find_all('a') print "Tous les liens" for link in links: print link.name,link['href'],link.get_text() print "Obtenir une adresse URL spécifique" link_node = soup.find('a',href="http://example.com/elsie") print link_node.name,link_node['href'],link_node['class'],link_node.get_text() print "Correspondance d'expression régulière" link_node = soup.find('a',href=re.compile(r"ti")) print link_node.name,link_node['href'],link_node['class'],link_node.get_text() print "Obtenir le texte des paragraphes P" p_node = soup.find('p',class_='story') print p_node.name,p_node['class'],p_node.get_text()

Adresse d'origine : https://blog.csdn.net/sinat_29957455/article/details/70846427