Bekommen Sie text von einer URL in ASP.NET
Ich bin auf der Suche nach einer zuverlässigen Methode der Extraktion von text gegeben, die web-Adresse, in ASP.NET/C#. Kann mir jemand zeigen Sie mir die richtige Richtung?
Auch, die web-Adresse könnte sagen, eine news-Website, die möglicherweise haben eine Menge von anzeigen und Menüs etc. Ich brauche einige intelligente Weise extrahiert nur die relevanten Inhalte. Nicht sicher, wie das getan werden könnte, wie würde ich definieren, was von Relevanz ist?
Sollte ich vielleicht Lesen Sie aus einem RSS-feed? Irgendwelche Gedanken dazu?
BEARBEITEN
Ich Habe ein Kopfgeld. Ich bin auf der Suche nach extrahieren "relevanten" text von einer URL. Von "relevant" meine ich, es soll ausschließen, dass die text-ads (und andere irrelevante info). Die Eingabe wird ähnlich einer news-Website. Ich brauche zu extrahieren nur die news info und loszuwerden, die überflüssigen text
- HTML-Agility-Pack hilft hier?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sobald Sie heruntergeladen haben die Seite, und begann mit einer Bibliothek HTML Agility Pack Parsen der html, dann Ihre Arbeit beginnt 🙂
Screen scraping ist in zwei Teile gegliedert.
Erste der webcrawler (viele Informationen dazu auf der web -, und einfachen code, der hier mit WebClient von einigen anderen Antworten). Die Raupen Durchlaufen muss, links und download-Seiten. Wenn Sie das herunterladen einer Menge von Seiten und haben die start-url könnte man Rollen Sie Ihre eigenen, oder verwenden Sie eine vorhandene. Check-out Wikipedia für eine Liste von open-source webcrawlers/Spinnen.
Der zweite Teil ist das Parsen von html und zog nur den text, den Sie möchten, und lassen keinen Lärm (Header, Banner, Fußzeilen usw.). Nur das Durchlaufen der DOM ist einfach mit bestehenden Bibliotheken, herauszufinden, was zu tun mit dem, was Sie analysiert, ist der schwierige Teil.
Ich geschrieben habe ein wenig darüber, bevor Sie es an einem anderen ALSO Frage und es könnte Ihnen einige Ideen, wie Sie manuell greifen die Inhalte, die Sie wollen. Aus meiner Erfahrung gibt es keine 100% Möglichkeit zu finden, die wichtigsten Inhalte einer Seite, und mehr als oft nicht, müssen Sie manuell geben Sie es einige Hinweise. Der schwierige Teil ist, dass, wenn das html-layout der Seite ändern, dann Sie Ihre Bildschirm-Spachtel, scheitern.
Konnte Sie Statistiken und vergleichen Sie den html-von mehreren Seiten, um zu folgern, wo die anzeigen, Menüs usw sind, um diejenigen zu beseitigen.
Da Sie erwähnen, Nachrichten-Websites, es gibt zwei andere Ansätze, die soll leichter sein, gelten für diese Seiten im Vergleich zur Analyse aus dem text aus der ursprünglichen html.
Schauen Sie sich auch Der Einfache Weg zu Extrahieren Sinnvoll, Text aus einer Beliebigen HTML für die Eingabe, wie ein allgemeiner parser. Der code ist in Python, aber Sie sollten in der Lage sein, es zu konvertieren, ohne zu viel Mühe.
Ich denke, Sie brauchen einen html-parser wie HTMLAgilityPack oder verwenden Sie den new born baby.. YQL, es ist ein neues tool entwickeln, die von Yahoo seine syntax ist wie SQL eine ist, und Sie müssen ein wenig wissen über XPATH...
http://developer.yahoo.com/yql/
Danke
Verwenden WebClient Instanz, um Ihr markup...
Dann verwenden Sie das HtmlAgilityPack zum Parsen der response mit XPath...
Um die tatsächliche html-markup, versucht der WebClient-Objekt. So etwas bekommen Sie die markup:
Dann wie isc-fausto gesagt, können Sie reguläre Ausdrücke zum Parsen der Ausgabe als erforderlich.
using
und -1 wieder auch nur daran zu denken Parsen von HTML mit regexText summarization Techniken sind das, was Sie wahrscheinlich nach. Aber als grobe Heuristik, Sie können dies tun, mit ein paar relativ einfachen Schritten, solange Sie nicht das zählen auf 100% perfekte Ergebnisse, alle Zeit.
So lange, wie Sie nicht brauchen, um Unterstützung schreiben Systeme, die keine Leerzeichen zwischen Wörtern (Chinesisch, Japanisch), kann man ziemlich gute Ergebnisse bei der Suche nach den ersten paar Abfahrten von aufeinanderfolgenden Wort-Sequenzen mit einem beliebigen Schwellenwert, verbringen Sie ein paar Tage tuning. (Chinesisch und Japanisch erfordern würde, ein vernünftiges Wort zu brechen Identifikation-Algorithmus zusätzlich zu dieser Heuristik).
Ich würde beginnen mit einem HTML-Parser (HTML-Agility-Pack in Dotnet, oder so etwas wie Ruby ' s Nokogiri oder Python-BeautifulSoup wenn Sie möchten, zu Experimentieren mit den algorithmen in einer interaktiven Umgebung, bevor Sie Ihre C# - Lösung).
Reduzieren den Suchraum, Sequenzen von links mit wenig oder keinem umgebenden text mit Hilfe der Funktionen Ihres HTML-parser. Das sollte beseitigen die meisten Navigations-panels und bestimmten Arten von anzeigen. Man könnte dies weiter auszubauen suchen für die links, die Wörter nach Ihnen, aber keine Satzzeichen; dies würde zu beseitigen beschreibende links.
Wenn Sie beginnen, zu sehen, läuft der text gefolgt von "." oder "," mit sagen wir 5 oder mehr Worte (die Sie können versuchen, tuning später), Sie würden starten scoring, die als potentielle Satz oder satzfragment. Wenn Sie finden mehrere Läufe in einer Zeile, die hat ziemlich gute Chancen, der wichtigste Teil der Seite. Sie könnte die Partitur text mit
<p>
- tags um es ein bisschen höher. Sobald Sie haben eine ganze Menge von diesen Arten von Sequenzen, Die Chancen stehen ziemlich gut, dass du hast "Inhalt" und nicht als layout-Chrom.Diese wird nicht perfekt sein, und Sie müssen möglicherweise um einen Mechanismus zur Einstellung der Heuristik basiert auf der problematischen Seite Strukturen, die Sie regelmäßig überprüfen. Aber wenn Sie etwas bauen, auf der Grundlage dieses Ansatzes sollte es ziemlich gute Ergebnisse, die 80% oder so der Inhalt.
Wenn Sie diese Art von Methode unzureichend ist, möchten Sie vielleicht zu schauen, Bayes-Wahrscheinlichkeit oder Hidden-Markov-Modellen als eine Möglichkeit zur Verbesserung der Ergebnisse.
Sobald Sie die web-Seiten, html-code, Sie konnten es verwenden von Regulären Ausdrücken,