在我的Rails控制器中,我有一个用户提供的URL。我想从该网址的HTML中的<title>...</title>
标记中提取标题,并将其分配给变量title
。我怎么能这样做?
编辑:如果不使用外部包/库
,这将是一个加号答案 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