5

HTMLページを取得するために使用している次のコードがあります。URLを絶対にしてから、リンクを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ヌルですか?query で select-single が必要になる場合があります"//*[@id='content']"

参考までに、ルートの"/a"すべてのアンカーを意味します。動作しますか?より簡単な方法もあります。"descendant::a"HtmlElement.GetElementsByTagNameyourElement.GetElementsByTagName("a")

于 2010-01-21T17:38:51.180 に答える