c# - HTMLAgilityPack 选择具有不同 Xpath ID C# 的多个节点
问题描述
我正在使用 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;
}
}
我这样做的方式有什么问题吗?或者有没有一种方法可以使用 selectNodes 而不必使用这些具有不同 ID 的 Xpath 单独选择每个节点?
谢谢蚂蚁
解决方案
您可以查看start-with,这样您可以使用SelectNodes
:
var nodes = doc.DocumentNode.SelectNodes("//*[start-with(@id, 'result_')]/td[2]/div/a");
这样你就可以得到所有的result_X
节点,我相信这会更好,因为你的 for 循环假设有 50 个结果。
希望这对您有所帮助。
推荐阅读
- jwt - Postman - 使用密钥文件进行 JWT 身份验证
- elasticsearch - Curator_cli V5.8 禁用日志记录?
- excel - 在指定范围内排序并循环直到完成 - VBA Excel Marcro
- python-3.x - 我想用python打印字典
- mongodb - MongoDB聚合 实现PHP驱动
- python - python中的字符矩阵旋转
- javascript - HTML 使用函数来编写
表单内的选择 - c++ - 在 C++ 中,我如何在 C 中使用类似 strncmp 函数?
- javascript - 使用 vue 在画布上绘图
- java - Apache CXF 2.7 上下文传递问题