变量转换为 Nokogiri HTML 解析方法



我正在尝试解析一个大而复杂且在CSS中缺少任何类或ID的HTML文档。我想我可以让Nokogiri为我做这项工作。

我将有许多具有不同结构的页面,因此我认为我必须使用给定的结构来找到附近和相关元素。 具体来说,它在具有名称-值对的表单元格中发布。 使用唯一的名称,我猜我可以提取值。

该页面有几个表。 表的行数可变。 我想使用以下方法:

<tr class="boxInside">
<td>
    <strong>
        Number of Employees:
    </strong>
</td>
<td>
    15&nbsp;
</td>

所以我正在看这样的东西:

page.css('<strong>s*Number of Employees:s*</strong>')

在提取第二个分组时使用正则表达式将是我的目标。 我想将其作为变量引入,如下所示:

page.css('<strong>s*#{searchstring}s*</strong>')

我似乎做不好。 任何见解都值得赞赏。 在没有 Nokogiri 的情况下使用真正的正则表达式更加令人困惑。

这将

找到嵌入在行中的所有<strong>标签并返回文本:

require 'nokogiri'
page = Nokogiri::HTML(<<EOT)
<tr class="boxInside">
<td>
    <strong>
        Number of Employees:
    </strong>
</td>
<td>
    15&nbsp;
</td>
EOT
page.css('tr.boxInside strong').map(&:text) # => ["n        Number of Employees:n    "]

要使用CSS选择器,您必须遵循选择对象的规则。您不能只输入 HTML 标记。我建议在众多教程或参考站点之一上阅读有关它们的信息。

如果您知道所需的始终是与行开头有给定偏移量的单元格,则始终可以对 css 返回的结果 NodeSet 进行切片。

相关内容

  • 没有找到相关文章

最新更新