5

我有以下用于获取 html 页面的代码。将网址设为绝对网址,然后将链接设为 rel 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?

干杯,丹尼斯

4

1 回答 1

4

是否为ContentNode空?您可能需要使用查询 select-single "//*[@id='content']"

对于信息,表示根处的"/a"所有锚点。有用吗?还有可能更容易的 - 即。"descendant::a"HtmlElement.GetElementsByTagNameyourElement.GetElementsByTagName("a")

于 2010-01-21T17:38:51.180 回答