Frage

Das ist nicht wirklich eine Programmiersprache Frage, eher eine algorithmischen ein.

Das Problem: Das Finden der „Inhalt“ Abschnitt einer HTML-Seite.

Mit dem „Inhalt“ Ich meine den dom, die den Seiteninhalt enthält, wie von den Menschen gesehen, ohne den Lärm, einfach den „Seite eigentlichen Inhalt“. Ich weiß, dass das Problem nicht gut definiert ist, aber lassen Sie uns weiter ... Zum Beispiel in Blog-Websites, das ist in der Regel leicht, wenn sie auf eine bestimmte Stelle gerade haben Sie in der Regel einige Symbolleisten am oberen Rand der Seite, vielleicht einige Navigationselemente auf der LHS und dann haben Sie die div, die den Inhalt enthält. Der Versuch, diese aus dem HTML, um herauszufinden, kann schwierig sein. Aber zum Glück der meisten Blog-Beiträge RSS-Feeds und im Feed für diese bestimmte Stelle werden Sie einen Abschnitt (oder ) finden, und das ist genau das, was Sie wollen. Also, um die Definition von Inhalten zu verfeinern, das ist die eigentliche Sache auf der Seite, die den interessanten Teil enthält, und entfernen Sie alle Anzeigen, Navigationselemente usw. So finden Inhalte aus Blogs ist relativ einfach, sie haben RSS nehmen. Das Gleiche gilt für andere RSS stütz Seiten.

Was ist News-Sites? In vielen Fällen News-Sites haben RSS-Feeds, aber nicht immer. Wie findet man Inhalte auf Nachrichtenseiten dann? Was über allgemeinere Websites? Viele Web-Seiten (natürlich nicht alle) haben Inhaltsbereich und andere Abschnitte. Können Sie sich einen guten Algorithmus denken die Abschnitte zu finden, die „interessant“ v / s die weniger interessant sind? Vielleicht sind die Abschnitte, die sich von denen zu ändern, die sich nicht ändern?

Hope Ich habe mich klar ... Danke!

War es hilfreich?

Lösung

Ich habe dies nicht getan, aber dies würde mein allgemeiner Ansatz sein.

Wie Sie die fehlende Struktur in den sichtbaren Inhalt Teile angeben, (das heißt es nicht-Tags wie header, navigation, ads) von HTML bedeutet es schwieriger zu Hause ist in auf dem Schlüsselteil der Seite. Mein Ansatz wäre, zunächst verschiedene Elemente zu entfernen, die Sie auf jeden Fall entschieden haben, sind nicht interessant. Eine mögliche Liste der Ausnahmen könnten sein:

  • meta Elemente wie !doctype, head (nehmen Sie die title als separates Stück von Daten)
  • dynamische Elemente wie object, embed, applet, script
  • Bilder (je nachdem, ob wollen, dass sie behalten oder nicht), img
  • Formelemente, d.h. form, input, textarea, label, legend, select, option

Ein zweiter Durchgang könnte dann auszuschließen beginnt häufig div oder ul id / Klassennamen vorkommen, und alle Tags in sie, wie zum Beispiel:

  • header, footer, meta
  • nav, navigation, topnav, sidebar
  • ad, ads, adu (und andere Namen für Anzeigen häufig verwendete)

Das wird sich hoffentlich eine erhebliche Menge an Dekoration von der Seite entfernen. Die nächste Herausforderung besteht darin, zu versuchen, den Hauptinhalt von zu identifizieren, was noch übrig ist, und ich würde zunächst unter der Annahme, lassen vermuten, dass die Site Autor richtig semantische HTML verwendet, und so nutzt hauptsächlich die h1, h2 Kopf-Tags und die p Absatz-Tag.

Inhalt zu identifizieren, würde ich jeden Header-Tag sucht, die dann von einem Absatz-Tag (e) folgen. (Dies kann für Ihren Hauptinhalt h2 werden, die h1 Tag oft (und wohl auch falsch) verwendet, um die Site-Namen oder das Logo angezeigt werden, aber das wird hoffentlich ohne die Header-Teile der Seite werden eliminiert.) Jeder nachfolgender Absatz sollte hinzugefügt werden, um den aktuellen Inhalt, bis Sie eine Pause erreichen, die entweder das Ende des div oder td Element sein könnte, oder es könnte ein Kopfelement auf dem gleichen Niveau sein, das Sie aus gestartet.

Da es noch mehrere Sätze von Inhalten sein kann, die Sie auf der Seite gesammelt haben (vielleicht den Hauptinhalt plus dem kurzen Text über den Autor), benötigen Sie einen Entscheidungsschritt hier zu testen und zu verfeinern, die die höchstwahrscheinlich wählen Kandidat. Dies wird oft einfach die größte, sowohl in Bezug auf Länge und Anzahl der Absatzelemente verwendet.

Wie Sie weitere Beispiele für Inhalte zu sammeln, die Sie hinzufügen können, Maßnahmen zu Ihrem Algorithmus zu unterstützen; Dies könnte sein, dass Sie viele der Seiten verwenden div id="content" oder id="maincontent" bemerken. Es kann auch nützlich sein, um die sekundären Inhaltselemente zu erhalten, die Sie festgestellt, so dass, wenn bestimmte Seiten haben eine seltsame Art und Weise den Inhalt der Strukturierung, dann, wenn Sie einen Fänger in Ihrem Algorithmus hinzufügen haben kann es gegen eben diese erneut ausgeführt werden Website-Content.

Andere Tipps

Eine gut strukturierte Website wird ihre gemeinsame Bereiche haben den gleichen Code wiederverwenden, beispielsweise Navigation, Kopf- und etc.

Wenn Sie eine Zielseite haben, die Sie analysieren möchten, versuchen Sie blättern durch ein paar andere Seiten unter derselben Domain / Sub-Domain und finden Sie Elemente, die für alle Seiten gemeinsam sind. Das sind die Geräusche, die du loswerden wollen von.

Dann können Sie sich anschauen, was bleibt, um zu sehen, wenn einige Geräusche in gerutscht. Wenn Sie eine angemessene Menge dieser Daten gesammelt haben, versuchen, einige Muster in ihnen zu finden. Verfeinern Sie Ihre Logik und wiederholen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top