我试图解析一个大而复杂的HTML文档,并且缺少CSS中的任何类或ID。我想我可以让Nokogiri为我做这项工作。
我将有许多不同结构的页面,所以我认为我必须使用我给出的结构来找到附近和相关的元素。具体来说,它在具有名称 - 值对的表格单元格中发布。使用唯一的名称,我猜我可以提取值。
该页面有一些表格。表具有可变数量的行。我想使用以下内容:
<tr class="boxInside">
<td>
<strong>
Number of Employees:
</strong>
</td>
<td>
15
</td>
所以我正在看这样的事情:
page.css('<strong>\s*Number of Employees:\s*<\/strong>')
在提取第二个分组时使用regexp将是我的目标。我希望将其作为变量引入,如下所示:
page.css('<strong>\s*#{searchstring}\s*<\/strong>')
我似乎无法做到正确。有任何见解赞赏。使用没有Nokogiri的真正正则表达式更加令人困惑。
答案 0 :(得分:0)
这将找到嵌入在行中的所有<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进行切片。