Comment extraire le texte d'une page Web visible à l'aide de BeautifulSoup ?

DDD
Libérer: 2024-11-25 18:41:09
original
728 Les gens l'ont consulté

How to Extract Visible Webpage Text Using BeautifulSoup?

Extraire le texte visible d'une page Web avec BeautifulSoup

De nombreuses tâches de web-scraping impliquent de récupérer le contenu textuel visible d'une page Web, à l'exclusion d'éléments tels que des scripts, commentaires et styles CSS. En utilisant BeautifulSoup, y parvenir peut être simple avec la bonne approche.

Un problème courant survient lors de l'utilisation de la fonction findAll(), car elle récupère tous les nœuds de texte, y compris ceux cachés dans des éléments indésirables. Pour résoudre ce problème, nous pouvons définir un filtre personnalisé pour exclure des balises et des commentaires spécifiques.

Le code suivant illustre cette approche :

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

La fonction tag_visible vérifie si l'élément parent d'un texte Le nœud correspond à l'une des balises indésirables ou si le nœud est un commentaire. Les nœuds qui passent ce filtre sont ensuite utilisés pour combiner le texte visible en une seule chaîne en utilisant u" ".join(t.strip() for t in visible_texts).

Cette approche extrait efficacement uniquement le texte visible de une page Web, en laissant de côté les éléments inutiles comme les scripts et les commentaires.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal