在C#中选择具有不同类和xpath的多个div节点

时间:2016-07-19 11:55:50

标签: c# html xpath html-agility-pack

我想用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 ']

这是错误:

  

'// div [contains(@ class ='web-result ur tsrc')]中的函数'contains'   &安培;&安培; // div [contains(@ class ='web-result ur tsrc_Wiki-SA']&&   // div [contains(@ class ='web-result ur tsrc_tube youtube-result']'has   参数数量无效。

2 个答案:

答案 0 :(得分:4)

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

希望它有帮助...:)

答案 1 :(得分:0)

要选择具有不同类名的所有div(节点),请直接搜索类名。

您可以按照以下步骤进行操作:

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