ブラウザーに Web ページをロードしており (つまり、その DOM と要素の配置の両方にアクセスできます)、ブロック要素 (またはこれらの要素の並べ替えられたリスト) を見つけたいと考えています。テキストの連続ブロック)。目標は、メニュー、ヘッダー、フッターなどを除外することです。
4 に答える
これは私の個人的なお気に入りです: VIPS: a Vision-based Page Segmentation Algorithm
まず、Webページを解析する必要がある場合は、HTMLAgilityPackを使用してXMLに変換します。シンプルなXPathを使用してBODYに直接移動することで、すべてが高速化され、可能になります。
その後、すべてのdivで実行し(敏捷性パックからリスト内のすべてのDIV要素を取得できます)、必要なものを取得する必要があります。
これを行うには、HTML がどのように「ノイズが多い」か、つまり、HTML ページで表示されるテキストに対するマークアップの比率を分析することに基づいた簡単な手法があります。 The Easy Way to Extract Useful Text from Arbitrary HTML では、この tex について説明し、説明する Python コードを示しています。
参照。このアイデアを実装するHTML::ContentExtractor Perl モジュールもあります。これを使用する場合は、beautifulsoup を使用して最初に html をクリーンアップするのが理にかなっています。
Vit Baisa のWeb Content Cleaningに関する論文をお勧めします。彼もいくつかのコードを持っていると思いますが、そのリンクが見つかりません。自然言語処理の LingPipe ブログでも、まったく同じ問題が議論されています。