Ich habe eine Webseite im Browser geladen (dh ihr DOM und ihre Elementpositionierung sind beide für mich zugänglich) und ich möchte das Blockelement (oder eine sortierte Liste dieser Elemente) finden, das wahrscheinlich den meisten Inhalt enthält (wie in einem fortlaufenden Textblock). Das Ziel ist es, Dinge wie Menüs, Kopf- und Fußzeilen usw. auszuschließen.
Dies ist mein persönlicher Favorit: VIPS: ein Vision-basierter Seitensegmentierungsalgorithmus
Wenn Sie zuerst eine Webseite analysieren möchten, verwende ich HTMLAgilityPack , um sie in XML umzuwandeln. Es beschleunigt alles und ermöglicht es Ihnen, mit einem einfachen XPath direkt zum BODY zu gelangen.
Danach müssen Sie alle divs ausführen (Sie können alle DIV-Elemente in einer Liste aus dem Agility-Paket erhalten) und erhalten, was Sie wollen.
Es gibt eine einfache Technik, um dies zu tun, basierend auf der Analyse, wie "verrauschtes" HTML ist, d. h. wie ist das Verhältnis von Markup zu angezeigtem Text durch eine HTML-Seite. Der einfache Weg, nützlichen Text aus beliebigem HTML zu extrahieren beschreibt dieses tex und gibt etwas Python-Code zur Veranschaulichung.
Vgl. auch das Modul HTML :: ContentExtractor Perl, das diese Idee umsetzt . Es würde Sinn machen, den HTML-Code zuerst zu reinigen, wenn Sie dies verwenden möchten, indem Sie beautifulsoup verwenden.
Ich würde Vit Baisas Arbeit über Web Content Cleaning empfehlen, ich denke, er hat etwas Code Auch, aber ich kann keinen Link dafür finden. Es gibt auch eine Diskussion Problem bei der Verarbeitung natürlicher Sprache LingPipe Blog.
Tags und Links algorithm webpage html-content-extraction