Pour juste du texte, Beautiful Soup 4 get_text()
Si vous ne voulez que le texte lisible par l'homme à l'intérieur d'un document ou d'une balise, vous pouvez utiliser la méthode get_text()
. Elle retourne tout le texte dans un document ou sous une balise, sous forme d'une seule chaîne Unicode :
markup = '\nI linked to example.com\n'
soup = BeautifulSoup(markup, 'html.parser')
soup.get_text()
'\nI linked to example.com\n'
soup.i.get_text()
'example.com'
Vous pouvez spécifier une chaîne à utiliser pour joindre les morceaux de texte ensemble :
soup.get_text("|")
'\nI linked to |example.com|\n'
Vous pouvez dire à Beautiful Soup de supprimer les espaces blancs du début et de la fin de chaque morceau de texte :
soup.get_text("|", strip=True)
'I linked to|example.com'
Mais à ce stade, vous voudrez peut-être utiliser le générateur .stripped_strings
à la place, et traiter le texte vous-même :
[text for text in soup.stripped_strings]
# ['I linked to', 'example.com']
À partir de la version 4.9.0 de Beautiful Soup, lorsque lxml
ou html.parser
sont utilisés, le contenu des balises </code>, <code><style></code> et <code><template></code> n'est pas considéré comme du <code>'texte'</code>, car ces balises ne font pas partie du contenu visible de la page pour les humains.</p> <p>Référez-vous ici : <a href="https://www.crummy.com/software/BeautifulSoup/bs4/doc/#get-text" rel="nofollow noreferrer">https://www.crummy.com/software/BeautifulSoup/bs4/doc/#get-text</a></p></x-turndown>