HTML Agility Pack ruft die href-Attribute aller Anker auf der Seite ab

c# html-agility-pack

Frage

Ich versuche, aus einer HTML-Datei extrahierte Links zu einer CheckBoxList ( cbl_items ) cbl_items .

Es funktioniert so weit, aber anstelle des Links wird der Name des Elements als HtmlAgilityPack.HtmlNode angezeigt. Ich habe versucht, DocumentElement anstelle von Node aber es sagte, dass es nicht existiert oder ähnlich.

Wie kann ich die URL anstelle von HtmlAgilityPack.HtmlNode angezeigt bekommen?

Das habe ich bisher versucht:

HtmlWeb hw = new HtmlWeb();
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc = hw.Load(tb_url.Text);
foreach (HtmlNode link in doc.DocumentNode.SelectNodes("//a[@href]"))
{
  cbl_items.Items.Add(link);
}

Akzeptierte Antwort

Sie fügen das HtmlNode Objekt der CheckBoxList und nicht den Wert des href Attributs. Was Sie sehen, ist der HtmlNode ToString() Wert von ToString() , da dies das Beste ist, was die CheckBoxList zum Anzeigen dieses Objekts tun kann.

Stattdessen können Sie GetAttributeValue(string attribute, string defaultValue) , um den Wert des href Attributs abzurufen.

HtmlWeb hw = new HtmlWeb();
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc = hw.Load(tb_url.Text);
foreach (HtmlNode link in doc.DocumentNode.SelectNodes("//a[@href]"))
{
    // Get the value of the HREF attribute
    string hrefValue = link.GetAttributeValue( "href", string.Empty );
    cbl_items.Items.Add(hrefValue);
}


Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum