我使用HTML Agility Pack从w网页获取URL。URL为:
http://goo.gl/DqfQl
如果我使用下面的代码,我会得到我想要的链接:
String html = getHtml("http://goo.gl/DqfQl");
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(html);
HtmlNodeCollection address_rows = doc.DocumentNode.SelectNodes("//div[@class='name']/a");
foreach (HtmlNode row in address_rows)
{
MessageBox.Show(row.GetAttributeValue("href",LINK_NOT_FOUND));
}但是,当我更改HtmlNodeCollection来获取包含class="row'的div,并且想要获取URL时,我总是得到第一个URL。
HtmlNodeCollection address_rows = doc.DocumentNode.SelectNodes("//div[@class='row']");
foreach (HtmlNode element in address_rows) {
MessageBox.Show(element.SelectSingleNode("//div[@class='name']/a").GetAttributeValue("href",LINK_NOT_FOUND));
} 我尝试了一下这段代码,有一段时间我认为我成功了。但是现在我不能使用第二个代码片段来选择我想要的所有URL。你能帮上忙吗?
发布于 2012-08-09 04:50:33
你必须加一个点“。到XPath,否则它将从文档开头匹配,而不是在节点内部匹配。
只需将第二个字符串更改为".//div[@class='name']/a",它就应该可以工作了
https://stackoverflow.com/questions/11872901
复制相似问题