如何使用Nokogiri从标签中提取文本

时间:2014-08-06 17:57:48

标签: html regex nokogiri href extraction

示例:

<p><a href="http://localhost:3000/replies/286"rel="nofollow"target"_blank">http://localhost:3000/replies/279</a><br><p>

目前正在使用Nokogiri从<a>获取href:

doc.search('a').each do |node|
  href = node.attributes['href'].try(:value)

我需要确保文本部分中的内容是href中的内容,并且我不确定如何提取它。

1 个答案:

答案 0 :(得分:1)

以下是检查的基础知识:

require 'nokogiri'

doc = Nokogiri::HTML(<<EOT)
<p><a href="http://localhost:3000/replies/286"rel="nofollow"target"_blank">http://localhost:3000/replies/279</a><br><p>
EOT

link = doc.at('a')
link['href'] == link.text # => false

修改HTML以使HREF和text匹配:

require 'nokogiri'

doc = Nokogiri::HTML(<<EOT)
<p><a href="http://localhost:3000/replies/279"rel="nofollow"target"_blank">http://localhost:3000/replies/279</a><br><p>
EOT

link = doc.at('a')
link['href'] == link.text # => true

at仅返回与选择器匹配的第一个节点,因此如果您要检查多个节点,则需要使用search并迭代它返回的NodeSet。