Rubyでも簡単にスクレイピングはできるわ。
サンプルとして、.NETの『Xpathでスクレイピング 』同様、『小説家になろう』サイトの小説を抽出してみるわね。
Nokogiri を使うわ。インストールは以下の通りね。
# apt-get install ruby-nokogiri
たぶん、nokogiriパッケージがあると思います。
gemで入れるのがいいかしら?
# gem install nokogiri
そのほか注意点としては、rbenvを入れている場合はどのrubyにいれるのかとか、よく考えた方がいいくらいかしらね。
Xpathがどうとかnodeがどうとかって解説は他のもっと素晴らしいサイトにお任せするわね。
なお、以下のサンプルURLのアクセス先にある三文小説だけど、ここの管理人の書いたものだから、ないと思うけど問い合わせはそちらによろしくね。
#!/usr/bin/ruby # encoding: utf-8 require 'nokogiri' require 'open-uri' ans = [] title = nil begin url = "http://ncode.syosetu.com/n3170ch/8/" p url x = "" open(url).each{|d| x += d.clone } doc = Nokogiri.HTML(x) rescue doc = Nokogiri.HTML("<html><body><p>異常終了</p></body></html>") ans[ans.length] = "Nokogiri異常終了" end begin title = doc.xpath("//title").inner_text rescue title = "不明" end begin doc.xpath("//div[@class='novel_view']").each do |node| next if node.children.inner_text == nil aa = node.inner_text.clone aa.gsub! /(\ | |\t|\r)/,'' ans.push(aa.clone) end ans.each{|x| print x+"\n" } print "「#{title}」 ここまで\n" rescue p "あら?" end
$ ruby test.rb "http://ncode.syosetu.com/n3170ch/8/" : :(本文) : 「異世界ドライブ旅行記 - 拾いました。」 ここまで $
うん。いけたみたいね。