Recherche…


Remarques

Dans cette section, nous discutons de ce qu'est Beautiful Soup, de son utilisation et d'un bref aperçu de son utilisation.

Beautiful Soup est une bibliothèque Python qui utilise votre analyseur html / xml pré-installé et convertit la page Web / html / xml en une arborescence composée de balises, d’éléments, d’attributs et de valeurs. Pour être plus précis, l’arbre est constitué de quatre types d’objets, Tag, NavigableString, BeautifulSoup et Comment. Cet arbre peut ensuite être "interrogé" en utilisant les méthodes / propriétés de l'objet BeautifulSoup créé à partir de la bibliothèque de l'analyseur.

Votre besoin: vous avez souvent l'un des besoins suivants:

  1. Vous souhaiterez peut-être analyser une page Web pour déterminer le nombre de balises trouvées, le nombre d'éléments de chaque balise détectés et leurs valeurs. Vous voudrez peut-être les changer.

  2. Vous souhaiterez peut-être déterminer les noms et les valeurs des éléments afin de pouvoir les utiliser conjointement avec d'autres bibliothèques pour l'automatisation de pages Web, telles que Selenium .

  3. Vous pouvez souhaiter transférer / extraire des données affichées dans une page Web vers d'autres formats, tels qu'un fichier CSV ou une base de données relationnelle telle que SQLite ou mysql. Dans ce cas, la bibliothèque vous aide dans la première étape, à comprendre la structure de la page Web, bien que vous utilisiez d'autres bibliothèques pour effectuer l'acte de transfert.

  4. Vous voudrez peut-être savoir combien d’éléments sont stylés avec un certain style CSS et lesquels.

Séquence d'utilisation basique typique dans votre code Python:

  1. Importer la bibliothèque Beautiful Soup

  2. Ouvrez une page Web ou un texte HTML avec la bibliothèque BeautifulSoup en mentionnant quel analyseur utiliser. Le résultat de cette étape est un objet BeautifulSoup. (Remarque: ce nom d’analyseur mentionné doit être déjà installé dans le cadre de vos processus Python. Par exemple, html.parser est un package intégré avec piles fourni avec Python. Vous pouvez installer d’autres analyseurs tels que lxml ou html5lib .)

  3. "Requête" ou recherchez l'objet BeautifulSoup en utilisant la syntaxe 'object.method' et obtenez le résultat dans une collection, telle qu'un dictionnaire Python. Pour certaines méthodes, la sortie sera une valeur simple.

  4. Utilisez le résultat de l'étape précédente pour faire ce que vous voulez en faire, en restant dans votre code Python. Vous pouvez également modifier les valeurs d'élément ou les valeurs d'attribut dans l'objet d'arborescence. Les modifications n'affectent pas la source du code html, mais vous pouvez appeler des méthodes de formatage de sortie (telles que prettify ) pour créer une nouvelle sortie à partir de l'objet BeautifulSoup.

Méthodes couramment utilisées: Généralement, les méthodes .find et .find_all sont utilisées pour rechercher l'arborescence, en donnant les arguments d'entrée.

Les arguments d'entrée sont les suivants: le nom de la balise recherchée, les noms des attributs et d'autres arguments connexes. Ces arguments peuvent être présentés comme suit: une chaîne, une expression régulière, une liste ou même une fonction.

Les utilisations courantes de l'objet BeautifulSoup incluent:

  1. Recherche par classe CSS
  2. Recherche par adresse de lien hypertexte
  3. Recherche par identifiant d'élément, tag
  4. Recherche par nom d'attribut. Valeur d'attribut.

Si vous avez besoin de filtrer l'arborescence avec une combinaison des critères ci-dessus, vous pouvez également écrire une fonction qui a la valeur true ou false et rechercher par cette fonction.

Versions

Version Remarques Nom du paquet Date de sortie
3.x Version 3.2.1; Python 2 seulement beautifulsoup 2012-02-16
4.x Version 4.5.0; Python 2 et 3 beautifulsoup4 2016-07-20

Installation ou configuration

pip peut être utilisé pour installer BeautifulSoup. Pour installer la version 4 de BeautifulSoup, exécutez la commande:

pip install beautifulsoup4

Sachez que le nom du package est beautifulsoup4 au lieu de beautifulsoup , ce dernier nom signifie ancienne version, voir ancien beautifulsoup

Un exemple de grattage BeautifulSoup "Hello World"

from bs4 import BeautifulSoup
import requests

main_url = "https://fr.wikipedia.org/wiki/Hello_world"
req = requests.get(main_url)
soup = BeautifulSoup(req.text, "html.parser")

# Finding the main title tag.
title = soup.find("h1", class_ = "firstHeading")
print title.get_text()

# Finding the mid-titles tags and storing them in a list.
mid_titles = [tag.get_text() for tag in soup.find_all("span", class_ = "mw-headline")]

# Now using css selectors to retrieve the article shortcut links
links_tags = soup.select("li.toclevel-1")
for tag in links_tags:
    print tag.a.get("href")

# Retrieving the side page links by "blocks" and storing them in a dictionary
side_page_blocks = soup.find("div",
                            id = "mw-panel").find_all("div",
                                                      class_ = "portal")
blocks_links = {}
for num, block in enumerate(side_page_blocks):
    blocks_links[num] = [link.get("href") for link in block.find_all("a", href = True)]

print blocks_links[0]

Sortie:

"Hello, World!" program
#Purpose
#History
#Variations
#See_also
#References
#External_links
[u'/wiki/Main_Page', u'/wiki/Portal:Contents', u'/wiki/Portal:Featured_content', u'/wiki/Portal:Current_events', u'/wiki/Special:Random', u'https://donate.wikimedia.org/wiki/Special:FundraiserRedirector?utm_source=donate&utm_medium=sidebar&utm_campaign=C13_en.wikipedia.org&uselang=en', u'//shop.wikimedia.org']

Entrer votre analyseur préféré lors de l'instanciation de Beautiful Soup évite l' Warning habituel déclarant no parser was explicitely specified .

Différentes méthodes peuvent être utilisées pour trouver un élément dans l'arborescence de la page Web.

Bien qu'il existe quelques autres méthodes, les CSS classes et les CSS selectors sont deux moyens pratiques de rechercher des éléments dans l'arborescence.

Il convient de noter que nous pouvons rechercher des balises en définissant leur valeur d'attribut sur True lors de la recherche.

get_text() nous permet de récupérer du texte contenu dans une balise. Il le renvoie sous la forme d'une chaîne Unicode unique. tag.get("attribute") permet d'obtenir la valeur d'un attribut de tag.



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow