我被卡住不能不规则地解析嵌入的html标签。有没有办法从节点中删除所有html标签并保留所有文本?使用Nokogiri解析内部标签
我正在使用的代码:
rows = doc.search('//table[@id="table_1"]/tbody/tr')
details = rows.collect do |row|
detail = {}
[
[:word, 'td[1]/text()'],
[:meaning, 'td[6]/font'],
].collect do |name, xpath|
detail[name] = row.at_xpath(xpath).to_s.strip
end
detail
end
使用XPath:
[:meaning, 'td[6]/font']
产生
:meaning: ! '<font size="3">asking for information specifying <font
color="#CC0000" size="3">what is your name?</font> /what/ as in, <font color="#CC0000" size="3">I'm not sure what you mean</font>
/what/ as in <a style="text-decoration: none;" href="http://somesecretlink.com">what</a></font>
在另一方面,使用XPath:
'td/font/text()'
生成
:meaning: asking for information specifying
从而忽略了节点的所有子。我想达到的是这
:meaning: asking for information specifying what is your name? /what/ as in, I'm not sure what you mean /what/ as in what? I can't hear you
我不明白哪来的第一个字体标记被关闭。你试过('td/font')。text? – Roman 2011-05-22 22:15:20
Roman,我纠正了输出。它确实生成关闭字体标签。 – PunjCoder 2011-05-22 22:36:07
好吧,你是否尝试做row.at_xpath('td [6]/font').text? – Roman 2011-05-22 22:49:17