c# get - Holen Sie sich alle Links auf der HTML-Seite?




from parser (5)

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 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?


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]"))
 {

 }

Sie müssen das HTML Agility Pack verwenden .

Beispielsweise:

var doc = new HtmlWeb().Load(url);
var linkTags = doc.DocumentNode.Descendants("link");
var linkedPages = doc.DocumentNode.Descendants("a")
                                  .Select(a => a.GetAttributeValue("href", null))
                                  .Where(u => !String.IsNullOrEmpty(u));


foreach(Foos foo in Enum.GetValues(typeof(Foos)))




c# asp.net