2

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

编辑:在不使用外部包/库的情况下这样做会更好

4

1 回答 1

4

我刚刚尝试使用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用于将正则表达式与字符串进行匹配。它基本上相同,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
于 2012-10-24T23:07:50.077 回答