1

この HTML を Nokogiri で解析しようとしています。

<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","")

しかし、その後、1 つの文字列になってしまい、ちょっと行き詰まってしまいます。これを行う効率的な方法はありますか?

4

2 に答える 2

2

最も簡単なのはおそらく:

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

できることの 1 つは、文字列に空白を残し、それを使用String#splitして配列に変換することです。

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

この場合、左から右へのマーカーも削除する必要があるかもしれません。改行しないスペースを置き換える必要はないと思うので、これを試すことができます:

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

(\u200eは左から右へのマーカーです)。

Nokogiri の代替手段は、CSS の代わりにxpathを使用することです。これにより、必要なテキスト ノードだけを直接選択し、使用mapして文字列の配列に変換できます。

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