Maison > développement back-end > Tutoriel Python > Comment extraire uniquement le texte visible des pages Web à l'aide de BeautifulSoup ?

Comment extraire uniquement le texte visible des pages Web à l'aide de BeautifulSoup ?

Susan Sarandon
Libérer: 2024-11-14 18:56:02
original
186 Les gens l'ont consulté

How to Extract Only Visible Text from Web Pages Using BeautifulSoup?

Extraction de texte de pages Web avec BeautifulSoup : extraire exclusivement du texte visible

Le scraping Web implique souvent la récupération de contenu textuel spécifique à partir de pages Web. En utilisant BeautifulSoup, une bibliothèque d'analyse HTML largement utilisée, vous pouvez rencontrer le défi d'extraire uniquement le texte visible sur une page Web, en excluant les éléments indésirables tels que les scripts, les commentaires et le CSS.

Identifier le texte visible

Pour déterminer si un élément HTML particulier contient du texte visible, vous pouvez utiliser la fonction tag_visible. Cette fonction vérifie si l'élément parent de l'élément cible se trouve dans un ensemble spécifique de balises exclues (par exemple, style, script, head) ou si l'élément cible est un commentaire. Si l'une ou l'autre des conditions est remplie, la fonction renvoie False, indiquant que l'élément n'est pas considéré comme visible.

Extraction du texte visible

Pour extraire le texte visible d'une page Web, suivez ces étapes :

  1. Créez un objet BeautifulSoup à partir du corps HTML.
  2. Recherchez tout le texte dans le HTML à l'aide de la méthode findAll(text=True).
  3. Filtrez le texte extrait à l'aide de la fonction tag_visible pour éliminer les éléments indésirables.
  4. Joignez les chaînes de texte visibles ensemble, en supprimant les espaces de début et de fin.

Exemple d'utilisation

Le code ci-dessous montre comment utiliser ces techniques pour extraire le texte visible d'une page Web :

from bs4 import BeautifulSoup
from bs4.element import Comment
import urllib.request

def tag_visible(element):
    if element.parent.name in ['style', 'script', 'head', 'title', 'meta', '[document]']:
        return False
    if isinstance(element, Comment):
        return False
    return True

def text_from_html(body):
    soup = BeautifulSoup(body, 'html.parser')
    texts = soup.findAll(text=True)
    visible_texts = filter(tag_visible, texts)
    return u" ".join(t.strip() for t in visible_texts)

html = urllib.request.urlopen('http://www.nytimes.com/2009/12/21/us/21storm.html').read()
print(text_from_html(html))
Copier après la connexion

En tirant parti de cette approche, vous pouvez efficacement extraire le texte visible des pages Web, en excluant le contenu non pertinent. à partir de scripts, de commentaires et d'autres éléments cachés.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal