在 C# 中使用 xpath 选择具有不同 class 的多个 div 节点

Selecting Multiple div Nodes with different class with xpath in C#

我想 select div 具有不同 class 的节点与 xpath。我应该怎么办? 我写了这段代码,但是它 returns 错误。

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 ']"); 

我需要这些 divs

//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 ']

这是错误:

Function '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 ']' has an invalid number of arguments.

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 ')]

希望对您有所帮助...:)

到select所有div(s)(节点)不同class个名字,直接搜索class个名字。

您可以按以下方式进行操作:

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 ']");