HTMLAgilityPack选择具有不同Xpath ID的多个节点C#

HTMLAgilityPack选择具有不同Xpath ID的多个节点C#,c#,html,html-agility-pack,C#,Html,Html Agility Pack,我正在使用HTMLAgilityPack从Amazon中提取数字媒体表,这是为了我的工作。xpath显示它们都有不同的ID示例: //*[@id="result_0"]/td[2]/div/a //*[@id="result_1"]/td[2]/div/a //*[@id="result_2"]/td[2]/div/a 所以我不能像我想的那样使用selectNodes,除非这周围还有其他东西? 目前我是这样做的,但似乎不对 var doc = web.Loa

我正在使用HTMLAgilityPack从Amazon中提取数字媒体表,这是为了我的工作。xpath显示它们都有不同的ID示例:

    //*[@id="result_0"]/td[2]/div/a
   //*[@id="result_1"]/td[2]/div/a
   //*[@id="result_2"]/td[2]/div/a
所以我不能像我想的那样使用selectNodes,除非这周围还有其他东西? 目前我是这样做的,但似乎不对

        var doc = web.Load("https://www.amazon.co.uk/s/ref=nb_sb_noss?url=search-alias%3Ddigital-music&field-keywords="+txtInput.Text+"&page="+nowNum+"");

     for (int i = 0; i < 50; i++)
        {
         try
             {
                node = doc.DocumentNode.SelectSingleNode("//*[@id=\"result_"+i+"\"]/td[2]/div/a").InnerText;
             }
        catch (exception)
        {
        throw;
        }
    }
var doc=web.Load(“https://www.amazon.co.uk/s/ref=nb_sb_noss?url=search-别名%3Ddigital music&field keywords=“+txtInput.Text+”&page=“+nowNum+”);
对于(int i=0;i<50;i++)
{
尝试
{
node=doc.DocumentNode.SelectSingleNode(“//*[@id=\”result\\+i+“\”]/td[2]/div/a”).InnerText;
}
捕获(例外)
{
投掷;
}
}
我做这件事的方式有什么问题吗?或者有没有一种方法可以使用selectNodes,而不必使用这些具有不同ID的XPath分别选择每个节点

多谢各位 Ant

您可以查看,这样您就可以使用
SelectNodes

var nodes = doc.DocumentNode.SelectNodes("//*[start-with(@id, 'result_')]/td[2]/div/a");
通过这种方式可以获得所有
result\ux
节点,我认为这样更好,因为for循环假设有50个结果。

希望这对您有所帮助。

您能发布一个您试图解析的HTML示例吗?您好,谢谢。这似乎是我一直在寻找的东西,尽管现在这给了我其他的错误。“System.Xml.XPath.XPathException:'需要名称空间管理器或XsltContext。此查询具有前缀、变量或用户定义的函数。'“啊,我可以使用了,谢谢”var nodes=doc.DocumentNode.SelectNodes(//tr[以(@id,'result')]]/td[2]/div/a开头”);”