練習 3-4
初級者向けレッスンの宿題。
文字列から抽出する練習問題。
空気を読んで出題者の意図通りに。
require 'open-uri' RUBY_VERSION # => "1.9.2" puts open('http://www.google.com', 'r:cp932', &:read). gsub(/\n/, ' '). split(%r|</a>|). map{|i|i.sub(/^.*<a/, '')}. map{|i|[$1, $2.strip] if /href="(.*?)".*>(.*)/ =~ i}. compact. map{|url, text|"#{text} <#{url}>"} # >> 画像 <http://www.google.co.jp/imghp?hl=ja&tab=wi> # >> 動画 <http://video.google.co.jp/?hl=ja&tab=wv> # >> 地図 <http://maps.google.co.jp/maps?hl=ja&tab=wl> # >> ニュース <http://news.google.co.jp/nwshp?hl=ja&tab=wn> # >> 書籍 <http://books.google.co.jp/bkshp?hl=ja&tab=wp> # >> Gmail <http://mail.google.com/mail/?hl=ja&tab=wm> # >> » <http://www.google.co.jp/intl/ja/options/> # >> iGoogle </url?sa=p&pref=ig&pval=3&q=http://www.google.co.jp/ig%3Fhl%3Dja%26source%3Diglk&usg=AFQjCNEmQuNg1ivauCid9lXp5yYSx6AHXw> # >> 設定 </preferences?hl=ja> # >> ログイン <https://www.google.com/accounts/Login?hl=ja&continue=http://www.google.co.jp/> # >> 検索オプション </advanced_search?hl=ja> # >> 言語ツール </language_tools?hl=ja> # >> 広告掲載 </intl/ja/ads/> # >> Google について </intl/ja/about.html> # >> Google.com in English <http://www.google.com/ncr> # >> プライバシー </intl/ja/privacy.html>
- html 取得。
- html 内の改行を捨てる。
- タグの途中で改行されてるかもだから
- 空白にせずに捨てても OK?
- anchor の終わりで分割。
- anchor の始まりまで捨てる。
- 文字列とURLを抽出。
- 最後の anchor 以降を捨てる。
- 出力用に整形。
やっぱり文字コードのとこがダサい。
解答例にあるみたいに nokogiri とか使いたい。勉強しよう。