我正在尝试解析一个大而复杂且在CSS中缺少任何类或ID的HTML文档。我想我可以让Nokogiri为我做这项工作。
我将有许多具有不同结构的页面,因此我认为我必须使用给定的结构来找到附近和相关元素。 具体来说,它在具有名称-值对的表单元格中发布。 使用唯一的名称,我猜我可以提取值。
该页面有几个表。 表的行数可变。 我想使用以下方法:
<tr class="boxInside">
<td>
<strong>
Number of Employees:
</strong>
</td>
<td>
15
</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
</td>
EOT
page.css('tr.boxInside strong').map(&:text) # => ["n Number of Employees:n "]
要使用CSS选择器,您必须遵循选择对象的规则。您不能只输入 HTML 标记。我建议在众多教程或参考站点之一上阅读有关它们的信息。
如果您知道所需的始终是与行开头有给定偏移量的单元格,则始终可以对 css
返回的结果 NodeSet 进行切片。