在 C# 中使用 xpath 选择具有不同类的多个 div 节点
Posted
技术标签:
【中文标题】在 C# 中使用 xpath 选择具有不同类的多个 div 节点【英文标题】:Selecting Multiple div Nodes with different class with xpath in C# 【发布时间】:2016-11-22 07:24:28 【问题描述】:我想用 xpath 选择具有不同类的 div 节点。我该怎么办? 我写了这段代码,但它返回错误。
htmlWeb w = new HtmlWeb();
string SearchResults = "http://www.ask.com/web?q=" + query.querytxt;
var hd = w.Load(SearchResults);
var titles = hd.DocumentNode.SelectNodes("//div[contains(@class='web-result ur tsrc')] && //div[contains(@class='web-result ur tsrc_Wiki-SA '] && //div[contains(@class='web-result ur tsrc_tube youtube-result ']");
我需要这些 div
//div[contains(@class='web-result ur tsrc')]
//div[contains(@class='web-result ur tsrc_Wiki-SA ')]
//div[contains(@class='web-result ur tsrc_tube youtube-result ']
这是错误:
函数'contains' in '//div[contains(@class='web-result ur tsrc')] && //div[contains(@class='web-result ur tsrc_Wiki-SA '] && //div[contains(@class='web-result ur tsrc_tube youtube-result ']' 有 参数数量无效。
【问题讨论】:
【参考方案1】:在xpath
contains()
函数与,
一起使用来比较值而不是=
。因此,请尝试以下正确的xpath
:-
//div[contains(@class, 'web-result ur tsrc')]
//div[contains(@class, 'web-result ur tsrc_Wiki-SA ')]
//div[contains(@class, 'web-result ur tsrc_tube youtube-result ')]
希望对您有所帮助...:)
【讨论】:
我在 *** 上看到了很多引用 contains() 函数的示例。他们中的大多数人告诉你多次使用 Contains() 但我无法让它们中的任何一个工作。你是第一个只调用一次并且它确实有效的!谢谢一百万。【参考方案2】:要选择所有具有不同类名的 div(s)(节点),请直接搜索类名。
你可以这样做:
hd.DocumentNode.SelectNodes("@class='web-result ur tsrc' or @class='web-result ur tsrc_Wiki-SA' or @class='web-result ur tsrc_tube youtube-result ']");
【讨论】:
以上是关于在 C# 中使用 xpath 选择具有不同类的多个 div 节点的主要内容,如果未能解决你的问题,请参考以下文章
如何在表中选择Record的链接包含多个不同类的行,每列具有相同的类名