以下是我要浏览的html的摘录。
<div class="text">
<h3>
<a href="http://www.faith.co.uk/">
Rodeo Sinclair
</a>
</h3>
这是我的红宝石代码。
@doc = open(url) { |f|
@doc = f.read
}
output = @doc.scan(/<h3><a href=(.*?)>/)
由于html文件中的新行和空格,这不起作用。无论如何我可以解决这个问题吗?
答案 0 :(得分:2)
我可以轻松创建一个解析HTML片段的正则表达式。
但是,我想鼓励您养成使用XML / HTML解析器与HTML交互的习惯。
require 'nokogiri'
require 'open-uri'
doc = Nokogiri::HTML(open(url))
output = doc.css('div h3 a').each do |link|
puts link.attr("href")
end
请参阅RegEx match open tags except XHTML self-contained tags,了解使用正则表达式解析HTML的令人信服的论点。
== EDIT ==更改为每个循环
答案 1 :(得分:1)
为匹配添加(可选)空格:
@doc.scan(/<h3>\s*<a href=(.*?)>/)