Den*_*tor 5 c# screen-scraping html-agility-pack
我有以下代码,我用来获取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();
Run Code Online (Sandbox Code Playgroud)
谁能看到我做错了什么?在这里试了一会儿,没有运气.此代码出现,ContentNode.SelectNodes("/ a")未设置为对象的实例.我虽然尝试将蒸汽设置为0?
干杯,丹尼斯
一片空白ContentNode
?您可能需要在查询中选择 select-single "//*[@id='content']"
。
对于信息,意味着根处的"/a"
所有锚点。有效吗?还有一个可能更容易 - 即。"descendant::a"
HtmlElement.GetElementsByTagName
yourElement.GetElementsByTagName("a")