我有一些看起来像这样的HTML
<tr>
What I want
<b>
What I don't want
</b>
<tr>
获取文本的代码是
my_row = page.search('tr').first
puts my_row.text
这个问题是输出What I wantWhat I don't Want
。
如何直接在所选标签内提取文本而不提取任何子元素中的文本?
答案 0 :(得分:1)
我认为您可以访问tr
代码,然后访问b
子代码并将其删除,这样您就可以获得“主要”内容:
require 'nokogiri'
data = <<-HTML
<tr>
What I want
<b>
What I don't want
</b>
<tr>
HTML
doc = Nokogiri::HTML.parse(data)
tr = doc.css('tr')
tr.css('b').remove
p tr.text
# "\n What I want\n \n\n"
您可以使用String#strip
来获取没有换行符的文字。
答案 1 :(得分:0)
你会想要使用像Nokogiri这样的东西来解析HTML。
https://github.com/sparklemotion/nokogiri
require 'nokogiri'
html = "<tr>
What I want
<b>
What I don't want
</b>
<tr>"
doc = Nokogiri::HTML(html)
text = doc.search('tr').xpath('text()')
puts text.text # What I want
答案 2 :(得分:0)
我为此使用了孩子:
doc.at('tr').child.text