如何按层次结构下载元素的内容

本文关键字:元素 下载 何按 层次结构 | 更新日期: 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文档的根节点,.//是相对的