c# - tutorial - htmlagilitypack converttoplaintext




Holen Sie sich alle Links auf der HTML-Seite? (3)

Ich arbeite an einem kleinen Hobby-Projekt. Ich habe bereits den Code geschrieben, um eine URL zu erhalten, lade die Kopfzeile herunter und gebe den Mime-Typ / Inhaltstyp zurück.

Der Schritt davor ist jedoch der, auf dem ich festhalte - ich muss den Inhalt aller URLs auf der Seite abrufen, die auf einem Tag basieren, und in Anführungszeichen, dh

...
<link rel='shortcut icon' href="/static/favicon.ico" type="image/x-icon" />
...

Würde den Faviconlink finden.

Gibt es etwas Hilfreiches in der .net-Bibliothek oder muss das ein Fall für Regex sein?


Es ist nichts in die BCL integriert, aber glücklicherweise können Sie das HTML Agility Pack verwenden , um diese Aufgabe ganz einfach zu erledigen.

Was Ihr spezifisches Problem angeht, lesen Sie bitte Einfaches Extrahieren von Links aus einem Snippet von HTML mit HtmlAgilityPack :

private List<string> ExtractAllAHrefTags(HtmlDocument htmlSnippet)
{
    List<string> hrefTags = new List<string>();

    foreach (HtmlNode link in htmlSnippet.DocumentNode.SelectNodes("//a[@href]"))
    {
        HtmlAttribute att = link.Attributes["href"];
        hrefTags.Add(att.Value);
    }

    return hrefTags;
}

Ich würde mir das Html Agility Pack ansehen .

Hier ist ein Beispiel direkt von ihrer Beispielseite, um alle Links auf einer Seite zu finden:

 HtmlWeb hw = new HtmlWeb();
 HtmlDocument doc = hw.Load(/* url */);
 foreach(HtmlNode link in doc.DocumentNode.SelectNodes("//a[@href]"))
 {

 }





asp.net