Scrapping web avec la bibliothèque beautifulSoup Python

1. Description de la bibliothèque BeautifulSoup

  • BeautifulSoup est une bibliothèque python très populaire qui permet d'extraire des données à partir de fichiers HTML et XML. Elle est souvent utilisée pour le web scraping, qui est le processus d'extraction d'informations à partir de pages web.
  • BeautifulSoup crée un arbre de syntaxe qui représente le document HTML ou XML et fournit ensuite des méthodes pour parcourir cet arbre et extraire des données spécifiques. Elle permet ainsi d'extraire facilement du texte, des liens, des images, des tableaux, etc. à partir d'une page web.
  • Pour utiliser BeautifulSoup dans python, il est nécessaire d'importer la bibliothèque dans le programme. Cela peut se faire en utilisant la commande suivante :
  • Une fois que la bibliothèque est importée, il est possible de charger un fichier HTML ou XML dans BeautifulSoup. Cela peut se faire à partir d'un fichier local ou à partir d'une URL en ligne.
  • Une fois le document chargé dans BeautifulSoup, il est possible de naviguer dans l'arbre de syntaxe à l'aide des méthodes fournies par la bibliothèque. Les méthodes de recherche permettent de trouver des balises spécifiques en fonction de leur nom, de leurs attributs ou de leur contenu.
  • Il est également possible de modifier le document HTML ou XML à l'aide de BeautifulSoup. Par exemple, il est possible de supprimer des balises, de modifier leur contenu ou de leur ajouter des attributs.
  • En résumé, BeautifulSoup est une bibliothèque python puissante et facile à utiliser pour l'extraction d'informations à partir de pages web. Elle permet de naviguer dans un document HTML ou XML et d'extraire des données spécifiques à l'aide de méthodes simples et efficaces.

2. Prérequis

Pour utiliser Beautiful Soup en python, il est nécessaire d'avoir une compréhension de base de la syntaxe HTML et XML. Il est également recommandé de connaître les concepts de base de la programmation python, tels que les variables, les boucles, les fonctions et les structures de données.
En outre, il est nécessaire d'installer la bibliothèque Beautiful Soup dans l'environnement python. Cela peut être fait en utilisant le gestionnaire de paquets pip en exécutant la commande suivante dans la ligne de commande :

Remarque

Afin de pouvoir utiliser Beautiful Soup avec des pages web, il est nécessaire d'avoir une connexion Internet active pour accéder aux pages web et extraire les données souhaitées.

3. Installation de la bibliothèque beautifulSoup et des packages dépendants

3.1 Installation de beautiful soup

Pour installer beautiful soup, il suffit d'utiliser l'invite de commande cmd et d'exécuter la commande:

3.2 Installation des dépendances

BeautifulSoup est une bibliothèque python open-source qui dépend de la bibliothèque standard python, ainsi que d'autres bibliothèques tierces.
La bibliothèque standard python inclut des modules pour la gestion de fichiers, l'encodage de caractères, les expressions régulières, la manipulation de chaînes, etc. Tous ces modules sont nécessaires pour exécuter Beautiful Soup.
En plus des modules standard python, Beautiful Soup dépend de la bibliothèque tierce "lxml". Cette bibliothèque fournit une implémentation rapide et efficace de la syntaxe XML et est utilisée par Beautiful Soup pour analyser les documents XML.

BeautifulSoup peut également utiliser la bibliothèque "html5lib" comme alternative à "lxml". Cette bibliothèque est utilisée pour l'analyse de documents HTML et offre une prise en charge complète de la spécification HTML5.

En résumé, les dépendances de BeautifulSoup sont la bibliothèque standard python, la bibliothèque tierce "lxml" pour l'analyse XML et la bibliothèque tierce "html5lib" pour l'analyse HTML.



4. Extraire des informations d'un site Web avec BeautifulSoup

4.1 Extraire des données avec la méthode find_all()

Nous allons voir par exemple comment récupérer le contenu de toutes les balises h2 à partir d'une adresse url donnée:

Exemple: obtenir les textes avec des liens




4.2 Extraire des données de balises selon des attributs spécifiques

Avec la méthode find_all() on peut aussi recherche le contenu des balise ayant un attribut spécifique:

Syntaxe:

Exemple (recherche de contenu des balises div ayant la classe "menuSD")

4.3 Extraire des données à l'aide de la méthode find()

Nous avons vue dans le paragraphe précédent la méthode find_all() qui permet d'extraire la liste des contenus selon la requête utilisée. La méthode find() est semblable à la méthode find_all() à la différence qu'elle extrait seulement le contenu de la première balise rencontrée.

Exemple

5. Liste des méthodes associées à un objet BeautifulSoup

Voici une liste de méthodes les plus utilisées associées à un objet BeautifulSoup :

  1. find_all(name, attrs, recursive, string, **kwargs) : trouve toutes les balises qui correspondent aux critères spécifiés et renvoie une liste de ces balises.
  2. find(name, attrs, recursive, string, **kwargs) : trouve la première balise qui correspond aux critères spécifiés et renvoie cette balise.
  3. select(selector) : trouve toutes les balises qui correspondent au sélecteur CSS spécifié et renvoie une liste de ces balises.
  4. prettify() : renvoie une version formatée et lisible du document HTML ou XML.
  5. get_text() : renvoie tout le texte contenu dans l'objet BeautifulSoup, y compris le texte contenu dans les balises enfants.
  6. contents : renvoie une liste de toutes les balises enfants et de tout le texte contenu dans l'objet BeautifulSoup.
  7. parent : renvoie la balise parent de l'objet BeautifulSoup.
  8. next_sibling : renvoie la balise suivante après l'objet BeautifulSoup.
  9. previous_sibling : renvoie la balise précédente avant l'objet BeautifulSoup.
  10. attrs : renvoie un dictionnaire des attributs de la balise.
  11. name : renvoie le nom de la balise.
  12. new_tag(name, attrs={}, **kwargs) : crée une nouvelle balise avec le nom et les attributs spécifiés.
  13. insert(position, tag) : insère la balise spécifiée à la position spécifiée dans la liste des balises enfants de l'objet BeautifulSoup.
  14. replace_with(tag) : remplace l'objet BeautifulSoup par la balise spécifiée.
  15. decompose() : supprime l'objet BeautifulSoup et tous ses descendants du document.
  16. has_attr(name) : renvoie True si la balise a un attribut avec le nom spécifié, sinon False.
  17. has_class(name) : renvoie True si la balise a la classe CSS spécifiée, sinon False.
  18. get(name, default=None) : renvoie la valeur de l'attribut avec le nom spécifié, ou la valeur par défaut si l'attribut n'existe pas.
  19. get_attribute_list(name) : renvoie une liste des valeurs des attributs avec le nom spécifié.
  20. unwrap() : supprime la balise spécifiée de l'objet BeautifulSoup, en fusionnant ses enfants avec l'objet BeautifulSoup.
  21. encode(formatter=None, encoding=None, errors='xmlcharrefreplace') : encode l'objet BeautifulSoup en une chaîne binaire, en utilisant le format et l'encodage spécifiés.

Ces méthodes ne sont que quelques exemples parmi les nombreuses méthodes disponibles dans BeautifulSoup. La documentation officielle de BeautifulSoup fournit une liste complète des méthodes et de leurs paramètres : https://www.crummy.com/software/BeautifulSoup/bs4/doc/

 

Younes Derfoufi
CRMEF OUJDA

1 thought on “Scrapping web avec la bibliothèque beautifulSoup Python

Leave a Reply