Seasons.NET

ちょっとした技術ブログです

scrapiでクラス名が2種類ある時の取り方

scrapiでtwitterのhtmlを解析していますが、
最近entry-content、entry_contentで
頻繁に発言タグの構成が変わります。。。毎回対応していては、
めんどくさいので、一気に定義してしまう方法を見つけました!!

$KCODE = "s"
require 'rubygems'
require 'scrapi'
require 'pp'
require 'kconv'

describe "Scrapiテスト" do

  before do
    @html = open("test.html","r").read()
  end

  it "クラス名が2パターンあっても・・・" do 

    @html.length.should > 0
    items = Scraper.define do
      process 'div.hoge-hoge' , "messages[]" => :text
      process 'div.hoge_hoge' , "messages[]" => :text
      result :messages
    end.scrape( @html , :parser_options => {:char_encoding=>'sjis'} )
    items.size.should == 3

  end

  after do
    @html = nil
  end

end

こんなhtmlを食わせる。

<html>
	<div class=hoge-hoge>
		hoge1
	</div>
	<div class=hoge_hoge>
		hoge2
	</div>
	<div class=hoge-hoge>
		hoge3
	</div>
</html>

そうすると、itemsには、hoge1,hoge2,hoge3が入ります。