Seleziona tutto <p> dai figli di un Nodo usando HTMLAgilityPack

c# html-agility-pack screen-scraping

Domanda

Ho il seguente codice che sto usando per ottenere una pagina html. Rendi gli URL assoluti e quindi rendi i link rel nofollow e apri in una nuova finestra / tab. Il mio problema riguarda l'aggiunta degli attributi agli <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();

Qualcuno può vedere cosa sto facendo male? Ho provato per un po 'qui senza fortuna. Questo codice viene visualizzato che ContentNode.SelectNodes ("/ a") non è impostato su un'istanza di un oggetto. Devo provare a impostare il vapore su 0?

Saluti, Denis

Risposta accettata

ContentNode è null? Potrebbe essere necessario selezionare-single con la query "//*[@id='content']" .

Per informazioni, "/a" indica tutti gli ancoraggi nella radice . opera "descendant::a" ? Esiste anche HtmlElement.GetElementsByTagName che potrebbe essere più semplice, ad esempio il yourElement.GetElementsByTagName("a") .




Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché