我有以下代码用于获取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?
干杯, 丹尼斯
答案 0 :(得分:4)
ContentNode
是否为空?您可能需要使用查询"//*[@id='content']"
选择单个。
有关信息,"/a"
表示根处的所有锚点。 "descendant::a"
有效吗?还有HtmlElement.GetElementsByTagName
可能更容易 - 即yourElement.GetElementsByTagName("a")
。