2010-01-04 9 views
9

J'ai une page web chargée dans le navigateur (c'est-à-dire que mon positionnement DOM et élément me sont accessibles) et je veux trouver l'élément de bloc (ou un liste de ces éléments), qui contient probablement le plus de contenu (comme dans un bloc de texte continu). Le but est d'exclure des choses comme les menus, les en-têtes, les pieds de page et autres.Quels algorithmes pourrais-je utiliser pour identifier le contenu d'une page Web

Répondre

1

Tout d'abord, si vous avez besoin d'analyser une page Web, j'utiliserais HTMLAgilityPack pour le transformer en XML. Cela accélérera tout et vous permettra, en utilisant un simple XPath, d'aller directement au CORPS. Après cela, vous devez courir sur tous les divs (vous pouvez obtenir tous les éléments DIV dans une liste du pack d'agilité), et obtenir ce que vous voulez.

+0

Je m'intéresse davantage aux types de critères que je pourrais éventuellement utiliser pour juger les différents nœuds candidats. – VoY

1

Il y a une technique simple de le faire, basée sur l'analyse la façon dont HTML « bruyant » est, à savoir, quel est le rapport de balisage au texte affiché dans une page html. The Easy Way to Extract Useful Text from Arbitrary HTML décrit ce tex, en donnant du code python à illustrer.

Cf. aussi le module Perl HTML::ContentExtractor, qui implémente cette idée. Il serait logique de nettoyer le code HTML en premier, si vous voulez l'utiliser, en utilisant beautifulsoup.

1

Je recommanderais la thèse de Vit Baisa sur Web Content Cleaning, je pense qu'il a aussi du code, mais je ne trouve pas de lien pour cela. Il y a aussi un discussion du même problème sur le blog de LingPipe traitant du langage naturel.