在我的 Rails 控制器中,我有一个用户提供的 URL。我想从该<title>...</title>
URL 的 HTML 中的标签中提取标题,并将其分配给一个变量title
. 我怎样才能做到这一点?
编辑:在不使用外部包/库的情况下这样做会更好
在我的 Rails 控制器中,我有一个用户提供的 URL。我想从该<title>...</title>
URL 的 HTML 中的标签中提取标题,并将其分配给一个变量title
. 我怎样才能做到这一点?
编辑:在不使用外部包/库的情况下这样做会更好
我刚刚尝试使用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