[[Ruby]]

この間、HTMLのタグを自分で処理しててひどい目にあったの。やっぱり、そういうのは妹のふりして弟にやらせるか、出来合いのツールに頼るべきよね。

そしたら、rubyにnokogiriってライブラリがあるらしいと知ったから使ってみたわ。

参考にしたのは、ここね。ひとつはPDFだから気をつけて。

| Nokogiri を使った Rubyスクレイピング [初心者向けチュートリアル] | http://morizyun.github.io/blog/ruby-nokogiri-scraping-tutorial/ |
| Xpathチートシート | http://aoproj.web.fc2.com/xpath/XPath_cheatsheets_v2.pdf |

とりあえず、サンプルページからリンクを抜き出してみよっか。

 #!/usr/bin/ruby -EUTF-8
 
 require 'nokogiri'
 require 'open-uri'
 
 url = 'http://www.yahoo.co.jp/'
 
 charset = nil
 html = open(url) do |f|
   charset = f.charset # 文字種別を取得
   f.read # htmlを読み込んで変数htmlに渡す
 end
 
 # htmlをパース(解析)してオブジェクトを作成
 doc = Nokogiri::HTML.parse(html, nil, charset)
 
 # タイトルを表示
 p doc.title
 # リンクを列挙してみよう。
 doc.xpath('//a').each do |node|
   #p node.attributes
   print <<EOM
 #{node.children.inner_text} #{node.attributes["href"].value}
 EOM
 end

これを実行すると、こんなのが出てくるの。

 "Yahoo! JAPAN"
 ヘルプ  http://help.yahoo.co.jp/
 写真で見る「東京モーターショー」        http://motorshow.carview.yahoo.co.jp/tokyo-motorshow/2015/
 露機墜落 データは爆破示唆か     http://news.yahoo.co.jp/pickup/6180058
 杭データ偽装「軽い気持ち」      http://news.yahoo.co.jp/pickup/6180052
 車衝突 5歳児投げ出され死亡      http://news.yahoo.co.jp/pickup/6180063
 米雇用統計 就業者数が大幅増     http://news.yahoo.co.jp/pickup/6180059
 パラ五輪中 小中学校を休日案     http://news.yahoo.co.jp/pickup/6180046
 真央SP首位 五輪「頭にある」     http://news.yahoo.co.jp/pickup/6180053
 虎 球児に背番号「18」を用意     http://news.yahoo.co.jp/pickup/6180054
 菜々緒の悪女役 祖母を泣かす     http://news.yahoo.co.jp/pickup/6180057
 もっと見る      http://news.yahoo.co.jp/list/?d=20151107&mc=f&mp=f
 完全復活        http://headlines.yahoo.co.jp/hl?a=20151106-00000135-spnannex-spo.view-000
 ショッピング    http://shopping.yahoo.co.jp/
 ヤフオク!       http://auctions.yahoo.co.jp/
 :
 :
 ニュース        http://news.yahoo.co.jp/
 天気    http://weather.yahoo.co.jp/weather/
 スポーツ        http://sports.yahoo.co.jp/
 ファイナンス    http://finance.yahoo.co.jp/
 テレビ  http://tv.yahoo.co.jp/
 GYAO!   http://gyao.yahoo.co.jp/
 Y!モバゲー      http://yahoo-mbga.jp/?_ref=aff%3Dysm001
 地域    http://loco.yahoo.co.jp/
 地図    http://map.yahoo.co.jp/
 路線    http://transit.yahoo.co.jp/
 :
 :
 メール  http://mail.yahoo.co.jp/


うーん、悪くないわね。
これで目的のサイトもうまく処理できるかしら?

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS