Rails从HTML中获取标题标记

时间:2012-10-24 23:02:02

标签: html ruby-on-rails ruby-on-rails-3 url title

在我的Rails控制器中,我有一个用户提供的URL。我想从该网址的HTML中的<title>...</title>标记中提取标题,并将其分配给变量title。我怎么能这样做?

编辑:如果不使用外部包/库

,这将是一个加号

1 个答案:

答案 0 :(得分:3)

我刚刚尝试使用HTTParty来获取文档,并Nokogiri来解析它:

Nokogiri::HTML::Document.parse(HTTParty.get("http://www.google.com").body).title
#=> "Google"

更新:

这适用于Net:HTTP,它是ruby标准库的一部分,还有一个正则表达式:

Net::HTTP.get(URI("http://twitter.com")) =~ /<title>(.*?)<\/title>/
$1 # get the first result from the matching
#=> "Twitter"

更新:

名为“match”的

=~String上的一个方法,用于将正则表达式与String匹配。它与Regexp#match基本相同,但接收器和参数都是反转的。

string = "<title>my title</title>
regexp = /<title>(.*?)<\/title>/

string =~ regexp
$1 # => "my title"

regexp.match(string)
$1 # => "my title"

当您获取的HTML文档不包含标题或标题标记时会发生什么?

"<title></title>" =~ regexp
$1 # => ""

"" =~ regexp
$1 # => nil