如何在Nokogiri中正确解析这个糟糕的html



我正在尝试使用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","")

但后来我最终得到了一根绳子,我有点卡住了。有没有有效的方法可以做到这一点?

最简单的可能是

block.at('div.times').text.scan /d{2}:d{2}/

您可以做的一件事是将空格保留在字符串中,然后使用 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)

相关内容

  • 没有找到相关文章

最新更新