我一直试图从名为“tim_new”的类中提取链接。我也得到了解决方案。
解决方案,摘要和必要信息都是here
上述XPATH查询是"//a[@class='tim_new']
,我的问题是,此查询如何区分代码段的第一行(在上面的链接和代码段的第二行中给出)。
更具体地说,这个XPATH查询的字面翻译是什么(英文)。
此外,我想编写几行代码来提取针对NSE:
<div class="FL gL_12 PL10 PT15">BSE: 523395 | NSE: 3MINDIA | ISIN: INE470A01017</div>
非常感谢帮助形成必要的选择查询。
我的代码写成:
IEnumerable<string> NSECODE = doc.DocumentNode.SelectSingleNode("//div[@NSE:]");
但这看起来不对。希望得到一些帮助。
答案 0 :(得分:1)
第一个选择中的XPath读取“选择具有名为class的属性且值为tim_new的所有文档元素”。括号中的内容不是您要返回的内容,而是您应用于搜索的标准。
我没有HTML Agility包,但是如果你试图查询以“NSE:”作为其文本的div,那么第二个查询的XPath应该只是“// div”然后你就会想要使用LINQ进行过滤。
像
这样的东西var nodes =
doc.DocumentNode.SelectNodes("//div[text()]").Where(a => a.InnerText.IndexOf("NSE:") > -1);
所以在英语中,“将包含文本的所有div元素返回到LINQ,然后检查内部文本值是否包含NSE:”。 同样,我不确定语法是否完美,但这就是主意。
XPath“// div [@NSE:]”将返回所有具有名为NSE:的属性的div,无论如何这都是非法的,因为属性名称中不允许使用“:”。你正在寻找元素的文本,而不是它的一个属性。
希望有所帮助。'
注意:如果嵌套的div都包含<div>NSE: some text<div>NSE: more text</div></div>
中的文本,那么您将获得重复的结果。