2

Railsコントローラーには、ユーザーが指定したURLがあります。そのURLのHTMLのタグからタイトルを抽出し、<title>...</title>それを変数に割り当てたいと思いますtitle。どうやってやるの?

編集:外部パッケージ/ライブラリを使用せずにそれを行うことはプラスになります

4

1 に答える 1

4

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
于 2012-10-24T23:07:50.077 に答える