CsQuery解析li项的集合

时间:2013-03-31 01:52:27

标签: c# html web-scraping csquery

这是我的代码:

CQ dom = CQ.Create(htmlString);
var items = dom[".blog-accordion li"];

foreach (var li in items)
{
    var newTournament = false;
    var test = li["header h2"];
}

在foreach循环li内变成IDomObject变量,我无法再向下钻取。

有什么建议吗?以下是我正在尝试解析的示例HTML:

<ul>
  <li>
    <header>
      <h2>Test</h2>
    </header>
  </li>
  <li>
    <header>
      <h2>Test 2</h2>
    </header>
  </li>
  <li>
    <header>
      <h2>Test 3</h2>
    </header>
  </li>
</ul>

我需要抓取每个h2元素的文本。

1 个答案:

答案 0 :(得分:13)

这样做是为了使CsQuery与行为相同的jQuery保持一致。您可以通过调用CQ方法将其转换回.Cq()对象

foreach (var li in items)
{
    var newTournament = false;
    var test = li.Cq().Find("header h2");
}

或者如果你想要更多jQuery ish语法,以下内容也可以:

foreach (var li in items)
{
    var newTournament = false;
    var test = CQ.Create(li)["header h2"];
}

如果您愿意,可以将您的代码重新考虑到以下内容:

var texts = CQ.Create(htmlString)[".blog-accordion li header h2"]
              .Select(x=>x.Cq().Text());