【问题标题】:Html Agility Pack C#: Expression must evaluate to a node-setHtml Agility Pack C#:表达式必须评估为节点集
【发布时间】:2011-08-27 19:18:55
【问题描述】:

我正在使用 Html Agility Pack 来获取网页。 我想收集我正在寻找的所有文本,格式如下:

<li><a href="/deal/map/4087664" class="show-location" title="bla bla" data-address="TEXT I AM LOOKING FOR"></a></li>

我试过这段代码:

var web = new HtmlWeb();
var doc = web.Load(url);

var nodes1 = doc.DocumentNode.SelectNodes("//[@data-address]");
var nodes2 = doc.DocumentNode.SelectNodes("//[@data-address={0}]");

两者都抛出异常:表达式必须计算为节点集。 如何更正我的选择器?

【问题讨论】:

    标签: c# html-agility-pack web-scraping


    【解决方案1】:

    无论如何我都不是 XPath 专家,但我怀疑你想要:

    // Note the *
    var nodes1 = doc.DocumentNode.SelectNodes("//*[@data-address]");
    

    换句话说,“任何具有data-address 属性的元素”

    【讨论】:

      猜你喜欢
      • 2013-07-24
      • 1970-01-01
      • 2020-05-29
      • 2011-04-20
      • 1970-01-01
      • 2018-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多