1

我正在尝试用 Nokogiri 解析这个 HTML:

<div class="times">
<span style="color:"><span style="padding:0 ">&lrm;</span><!--  -->16:45&lrm;</span>
<span style="color:"><span style="padding:0 "> &nbsp;&lrm;</span><!--  -->19:30&lrm;</span> 
<span style="color:"><span style="padding:0 "> &nbsp;&lrm;</span><!--  -->22:10&lrm;</span>
</div>

我只想获取插入数组的时间。

我像这样设置了一个gsub:

 block.css('div.times span').text.gsub(" ","").gsub("&nbsp","")

但后来我得到了一个字符串,我有点卡住了。有没有一种有效的方法来做到这一点?

4

2 回答 2

2

最简单的可能是:

block.at('div.times').text.scan /\d{2}:\d{2}/
于 2012-06-30T09:00:13.557 回答
1

您可以做的一件事是在字符串中保留空格,然后String#split将其转换为数组:

block.css('div.times span').text.gsub("&nbsp","").split(' ')

在这种情况下,您可能还需要删除从左到右的标记,并且我认为您不需要替换不间断空格,因此您可以尝试以下操作:

block.css('div.times span').text.gsub("\u200e", '').split(' ')

\u200e是从左到右的标记)。

Nokogiri 的另一种选择是使用xpath而不是 CSS,这将使您能够直接选择所需的文本节点,然后用于map转换为字符串数组:

block.xpath('//div[@class="times"]/span/text()').map(&:text)
于 2012-06-30T11:16:22.967 回答