我正在尝试使用Nokogiri解析此HTML:
<div class="times">
<span style="color:"><span style="padding:0 ">‎</span><!-- -->16:45‎</span>
<span style="color:"><span style="padding:0 "> ‎</span><!-- -->19:30‎</span>
<span style="color:"><span style="padding:0 "> ‎</span><!-- -->22:10‎</span>
</div>
我只想获取时间,插入到数组中。
我设置了一个这样的 gsub:
block.css('div.times span').text.gsub(" ","").gsub(" ","")
但后来我最终得到了一根绳子,我有点卡住了。有没有有效的方法可以做到这一点?
最简单的可能是
:
block.at('div.times').text.scan /d{2}:d{2}/
您可以做的一件事是将空格保留在字符串中,然后使用 String#split
将其转换为数组:
block.css('div.times span').text.gsub(" ","").split(' ')
在这种情况下,您可能还需要去除从左到右的标记,我认为您不需要替换不间断的空格,因此您可以尝试以下操作:
block.css('div.times span').text.gsub("u200e", '').split(' ')
(u200e
是从左到右的标记)。
Nokogiri 的另一种方法是使用 xpath 而不是 CSS,这将使您能够直接选择所需的文本节点,然后使用 map
转换为字符串数组:
block.xpath('//div[@class="times"]/span/text()').map(&:text)