我正在尝试使用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(" ","")
然后我最终得到了一根弦,我有点卡住了。有没有一种有效的方法呢?
答案 0 :(得分:2)
最简单的可能是:
block.at('div.times').text.scan /\d{2}:\d{2}/
答案 1 :(得分:1)
您可以做的一件事是将空格留在字符串中,然后使用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)