如何按层次结构下载元素的内容
本文关键字:元素 下载 何按 层次结构 | 更新日期: 2023-09-27 18:18:51
我是新来的stackoverflow,我希望我的问题不是奇怪的…
我只想下载sindex
元素的svalue
内的文本,以及另一个<p>
标签的内容。下面是它的层次结构:
/html/body/table/tbody/tr[2]/td/table/tbody/tr/td/table/tbody/tr[3]/td/table/tbody/tr/td/table/tbody/tr/td/table[4]/tbody/tr[2]/td[2]/table/tbody/tr/td/div/span/span/p/span/sindex
是否可以按层次结构下载内容?例如htmllagilitypack,还是以其他方式?
感谢 WebClient client = new WebClient();
string url = "http://www.google.com";
var content = client.DownloadString(url);
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(content);
// ?
在@MSI回答后更新,我使用这个:
var value = doc.DocumentNode
.SelectSingleNode("//html/body/div/div/a/div");
但是返回值总是空的。也许我理解错了层次结构。我使用firebug并查看html选项卡的层次结构,这是错误的吗?
你能不能用一行字,
*考虑svalue是一个属性:
doc.DocumentNode
.SelectSingleNode("//html/element1/element2")
.Attributes["svalue"].Value;
或
元素doc.DocumentNode
.SelectSingleNode("//html/element1/element2/svalue").InnerText;
编辑:
再保险。对于我前面的示例,以google.com.au作为参考HTML源,选择返回null的代码,使用以下方法来获得所需的结果。
doc.DocumentNode
.SelectSingleNode(".//element1/element2/svalue").InnerText;
DocumentNode应该指向html文档的根节点,.//是相对的