c# - CsQuery 解析 li 项的集合

标签 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 元素的文本。

最佳答案

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

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

或者,如果您想要更多 jQuery 风格的语法,以下内容也适用:

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());

关于c# - CsQuery 解析 li 项的集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15725531/

相关文章:

c# - LINQ to XML 中的 XmlDocumentFragment 等效吗?

基于每个文件的 C# 编译器常量?

c# - 无法创建类型为匿名类型的常量值,只有原始类型

javascript - 防止多个 AudioContexts

javascript - 使用 BeautifulSoup 在 div 下的 li 中找不到文本

c# - Html 敏捷包 C# : Expression must evaluate to a node-set

c# - 基类 Generic 和继承类 .NET

php - 使用 CSS 样式化代码块

html - 是否可以将 iframe 内容移到更高的位置?

javascript - 如何使用 javascript 抓取复杂的登录页面?