beautifulsoup Tutoriel
Commencer avec beautifulsoup
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:
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.
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 .
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.
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:
Importer la bibliothèque Beautiful Soup
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 quelxml
ouhtml5lib
.)"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.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:
- Recherche par classe CSS
- Recherche par adresse de lien hypertexte
- Recherche par identifiant d'élément, tag
- 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.