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



我正在使用HTMLAgilityPack从亚马逊中提取数字媒体表,这是为了我的工作。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 单独选择每个节点?

谢谢 蚂蚁

你可以看看开始,这样你就可以使用SelectNodes

var nodes = doc.DocumentNode.SelectNodes("//*[start-with(@id, 'result_')]/td[2]/div/a");

通过这种方式,您可以获得所有result_X节点,我相信这更好,因为您的 for 循环假设有 50 个结果。
希望这对你有帮助。

最新更新