【问题标题】:Selecting Multiple div Nodes with different class with xpath in C#在 C# 中使用 xpath 选择具有不同类的多个 div 节点
【发布时间】: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 ']' 有 参数数量无效。

【问题讨论】:

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


    【解决方案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 ')]
    

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

    【讨论】:

    • 我在 Stackoverflow 上看到了很多引用 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 ']");
    

    【讨论】:

      猜你喜欢
      • 2014-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多