![](/img/trans.png)
[英]Selecting Multiple div Nodes with different class with xpath in C#
[英]HTMLAgilityPack selecting Multiple nodes with different Xpath ID C#
我正在使用HTMLAgilityPack从亚马逊提取Digital Media表,这是我的工作。 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;
}
}
我做的方式有什么问题吗? 还是有一种方法可以使用selectNodes,而不必使用这些具有不同ID的Xpath分别选择每个节点?
谢谢蚂蚁
您可以研究start-with ,这样您可以使用SelectNodes
:
var nodes = doc.DocumentNode.SelectNodes("//*[start-with(@id, 'result_')]/td[2]/div/a");
这样,您可以获得所有result_X
节点,我相信这样做会更好,因为您的for循环假定有50个结果。
希望这对您有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.