全選<p>來自Node的孩子使用HTMLAgilityPack

c# html-agility-pack screen-scraping

我有以下代碼,我用來獲取HTML頁面。使網址絕對,然後使鏈接在新窗口/選項卡中顯示為nofollow並打開。我的問題是將屬性添加到<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();

誰能看到我做錯了什麼?在這裡嘗試了一段時間沒有運氣。此代碼出現,ContentNode.SelectNodes(“/ a”)未設置為對象的實例。我想嘗試將蒸汽設置為0?

乾杯,丹尼斯

一般承認的答案

ContentNode是否ContentNode空?您可能需要選擇單個查詢"//*[@id='content']"

有關信息, "/a"表示根目錄下的所有錨點。 "descendant::a"工作嗎?還有HtmlElement.GetElementsByTagName可能更容易 - 即yourElement.GetElementsByTagName("a")




許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因