Railsコントローラーには、ユーザーが指定したURLがあります。そのURLのHTMLのタグからタイトルを抽出し、<title>...</title>
それを変数に割り当てたいと思いますtitle
。どうやってやるの?
編集:外部パッケージ/ライブラリを使用せずにそれを行うことはプラスになります
Railsコントローラーには、ユーザーが指定したURLがあります。そのURLのHTMLのタグからタイトルを抽出し、<title>...</title>
それを変数に割り当てたいと思いますtitle
。どうやってやるの?
編集:外部パッケージ/ライブラリを使用せずにそれを行うことはプラスになります
HTTPartyを使用してドキュメントをフェッチし、Nokogiriを使用してドキュメントを解析してみました。
Nokogiri::HTML::Document.parse(HTTParty.get("http://www.google.com").body).title
#=> "Google"
更新しました:
これは、ruby標準ライブラリの一部であるNet:HTTP、および正規表現で機能します。
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