大家好,我有一个 html 代码作为下面的代码。我想得到里面的文字<a>(.*)</a>
我想得到这个结果:
data 1 : hello1
data 2 : hello2
data 3 : hello3
从该输入:
<a>
hello1
</a>
<a>
hello2
</a>
<a>
hello3
</a>
要扩展这两个注释,以下 Nokogiri 代码将适用于您的示例。您可以使用 xpath 或 CSS。专用的解析器比滚动你自己的正则表达式要强大得多。
> require 'nokogiri'
=> true
> doc = Nokogiri::HTML("<a>hello1</a><a>hello2</a><a>hello3</a>")
=> #<Nokogiri::HTML::Document:0x3ffec2494f48 name="document" children=[#<Nokogiri::XML::DTD:0x3ffec2494bd8 name="html">, #<Nokogiri::XML::Element:0x3ffec2494458 name="html" children=[#<Nokogiri::XML::Element:0x3ffec2494250 name="body" children=[#<Nokogiri::XML::Element:0x3ffec2494048 name="a" children=[#<Nokogiri::XML::Text:0x3ffec2493e40 "hello1">]>, #<Nokogiri::XML::Element:0x3ffec249dc88 name="a" children=[#<Nokogiri::XML::Text:0x3ffec249da80 "hello2">]>, #<Nokogiri::XML::Element:0x3ffec249d878 name="a" children=[#<Nokogiri::XML::Text:0x3ffec249d670 "hello3">]>]>]>]>
> doc.css('a').each { |node| p node.text }
"hello1"
"hello2"
"hello3"
=> 0
更新:如果您还没有安装 nokogiri gem,您将需要它。
sudo gem install nokogiri
根据您的设置,您可能还需要预先设置
require 'rubygems'