バリケンのRuby日記 RSSフィード

2007-01-19

[] scrAPIを使ってみる(1)  scrAPIを使ってみる(1) - バリケンのRuby日記 を含むブックマーク はてなブックマーク -  scrAPIを使ってみる(1) - バリケンのRuby日記  scrAPIを使ってみる(1) - バリケンのRuby日記 のブックマークコメント

じゃあ、こちらString#scrapeを試してみるよ。

require 'scrapi'

class String
  def scrape(pattern, options = {}, &block)
    options = {:extract=>options} unless options.is_a?(Hash)
    options[:parser_options] = {:char_encoding=>'utf8'}.merge(options[:parser_options]||{})
    extract = options.delete(:extract) || block && :element || :text
    scraped = Scraper.define do
      process pattern, "matches[]"=>extract
      result :matches
    end.scrape(self, options) || []
    block ? scraped.map{|i| block.call(i)} : scraped
  end
end

ヽ( ・∀・)ノくまくまー(2007-01-15) - String#scrape

WindowsRubyを使っている人は、「{:char_encoding=>'utf8'}」のところを「{:char_encoding=>'shiftjis'}」としてね。

じゃあ、asahi.comの「主要ニュースタイトルを取得」をやってみるね。

require 'open-uri'
require 'nkf'
require 'pp'

html = NKF.nkf('-w', open("http://www.asahi.com/").read)
pp html.scrape("#con1 li a:nth-child(1)")

WindowsRubyを使っている人は、「'-w'」を「'-s'」にしてね。

実行結果だよ。

["容疑者、以前にも待ち伏せ 東京の居酒屋女性店員殺害",
 "不二家のスナック菓子 05年、箱に虫混入",
 "「不起訴不当」と検察審査会が議決 竹ノ塚駅踏切事故",
 "病気腎、移植後に高たんぱく尿 万波医師手術の3患者",
 "米朝、高まる対話ムード ベルリンでの協議終了"]

すごい便利!

トラックバック - http://rubyist.g.hatena.ne.jp/muscovyduck/20070119