0

我正在尝试用 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>被发现时。如果有人有线索,我很开放。

4

3 回答 3

3
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
于 2013-03-09T22:09:07.507 回答
1

简单的方法:

doc.at('b[text()="Tél. : "]').next.text

如果由于某种原因您想确保它位于 b 和下一个 br 之间:

doc.at('b[text()="Tél. : "] + br').previous.text
于 2013-03-09T23:28:14.883 回答
1

我发现很多时候 CSS 更容易理解,虽然 CSS 本身通常不能查看节点的文本内部,迫使我们使用 XPath,但 Nokogiri 使用 jQuery 的扩展为我们提供了一些额外的帮助:

doc.at('b:contains("Tél.")').next_sibling.text.strip
"01 02 03 04 05"
于 2013-03-10T15:38:48.520 回答