Frage

ok ive bekam diesen Code:

public static string ScreenScrape(string url)
    {
        System.Net.WebRequest request = System.Net.WebRequest.Create(url);
        // set properties of the request
        using (System.Net.WebResponse response = request.GetResponse())
        {
            using (System.IO.StreamReader reader = new System.IO.StreamReader(response.GetResponseStream()))
            {
                return reader.ReadToEnd();
            }
        }
    }

Jetzt möchte ich den Text filtern, um die div class = „Kommentar“ Einsen bekommen gibt es eine weitere Option, die nicht mit regulären Ausdrücken? oder ist das der einzige Weg?

Dank

War es hilfreich?

Lösung

Sie müssen den HTML Agility Pack- verwenden.

Zum Beispiel:

var doc = new HtmlWeb().Load(url);
var comments = doc.Descendants("div")
                  .Where(div => div.GetAttributeValue("class", "") == "comment");

Beachten Sie, dass dies nicht <div class="OtherClass comment"> finden wird; wenn Sie sich für das suchen, können Sie IndexOf nennen.

Andere Tipps

HtmlAgilityPack ist nur ein Paket, das Sie HTML-Dateien manipulieren lässt, aber wenn Sie Bildschirm tun wollen schaben Selen WebDriver mit PhantomJS bessere Lösung ist. PhantomJS ist kopflos Web-Browser, so dass es wirklich schnell. Darüber hinaus hat es weit bessere Funktionalität im Vergleich zu HTML Agility Pack. Es gibt eine kurze Kurs zu diesem Thema.

shoulnd't Sie reguläre Ausdrücke verwenden, um Parsing HTML - sie das falsche Werkzeug für den Job sind, wie HTML es zu komplex für sie
. Sie sollten einen HTML-Parser verwenden.
Siehe auch: Suchen Sie für C # HTML-Parser

Sie erste Anlaufstelle sollte die HTML Agility Pack- sein.

Reguläre Ausdrücke sind der klassische Weg, um diese Art von Input für nicht .NET-Sprachen zu analysieren.

Additionaly, wenn Sie diese in eine XML-Variante normalisieren kann (das heißt XHTML), können Sie XPath-Abfrage und rufen Sie die erforderlichen Knoten verwenden.

Was Sie nicht wollen, zu tun ist, Ihren eigenen Parser zu implementieren.

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