HTMLAgilityPack选择具有不同Xpath ID的多个节点C#
我正在使用HTMLAgilityPack从Amazon中提取数字媒体表,这是为了我的工作。xpath显示它们都有不同的ID示例: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
//*[@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开头”);”