我试图用Nokogiri解析这个html,但是我卡住了。
<b>Dudule Francis</b>
<br>
<b>Tél. : </b>
01 02 03 04 05
<br>
<b>Fax : </b>
10 90 80 70 60
我想提取第一个电话号码01 02 03 04 05
。它在</b>
和<br>
之间,只有当<b>Tél. : </b>
被发现时。如果有人有线索,我愿意。
noko = Nokogiri::HTML(html_text)
noko.xpath("//b[text() = 'Tél. : ']").each do |b|
puts b.next_sibling.content.strip
end
# 01 02 03 04 05
最简单的方法:
doc.at('b[text()="Tél. : "]').next.text
如果出于某种原因你想确保它位于b和下一个br之间:
doc.at('b[text()="Tél. : "] + br').previous.text
我发现CSS在很多时候更容易理解,而且,尽管CSS本身通常不能查看节点的文本内部,迫使我们使用XPath,但Nokogiri在使用jQuery扩展时为我们提供了一些额外的帮助:
doc.at('b:contains("Tél.")').next_sibling.text.strip
"01 02 03 04 05"