Wählen Sie Alle

ist von einem Knoten Kinder mit HTMLAgilityPack

c# html-agility-pack screen-scraping

Frage

Ich habe den folgenden Code, den ich verwende, um eine HTML-Seite zu bekommen. Machen Sie die URLs absolut und machen Sie dann die Links relnofollow und öffnen Sie sie in einem neuen Fenster / Tab. Mein Problem ist das Hinzufügen der Attribute zu den <a> s.

        string url = "http://www.mysite.com/";
        string strResult = "";            

        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
        HttpWebResponse response = (HttpWebResponse)request.GetResponse();

        if ((request.HaveResponse) && (response.StatusCode == HttpStatusCode.OK)) {
            using (StreamReader sr = new StreamReader(response.GetResponseStream())) {
                strResult = sr.ReadToEnd();
                sr.Close();
            }
        }

        HtmlDocument ContentHTML = new HtmlDocument();
        ContentHTML.LoadHtml(strResult);
        HtmlNode ContentNode = ContentHTML.GetElementbyId("content");

        foreach (HtmlNode node in ContentNode.SelectNodes("/a")) {
            node.Attributes.Append("rel", "nofollow");
            node.Attributes.Append("target", "_blank");
        }

        return ContentNode.WriteTo();

Kann jemand sehen, was ich falsch mache? Versuchen Sie es hier für eine Weile ohne Glück. Dieser Code wird angezeigt, dass ContentNode.SelectNodes ("/ a") nicht auf eine Instanz eines Objekts festgelegt ist. Ich versuche aber, den Dampf auf 0 zu stellen?

Prost, Denis

Akzeptierte Antwort

Ist ContentNode null? Möglicherweise müssen Sie mit der Abfrage "//*[@id='content']" single "//*[@id='content']" auswählen.

Für Informationen bedeutet "/a" alle Anker an der Wurzel . funktioniert "descendant::a" ? Es gibt auch HtmlElement.GetElementsByTagName was einfacher sein könnte - yourElement.GetElementsByTagName("a") .



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