Rubyでスクレーピング(mechanizeとhpricot)

   ブックマークに追加する



以前にPerlでクロールするプログラムを作ったので、勉強がてら今回はRubyで作成してみました。ただ今回はかなり、てこずりました。文字コード?のところではまってしまい作るのにまるまる1日かかりました。まずは出来上がったコード。

【事前準備】


$ gem install hpricot
$ gem install mechanize

【ソースコード】


#!/usr/bin/ruby -Ks
require 'hpricot'
require 'mechanize'
require 'kconv'
require 'jcode'

$KCODE = 's'

# 初期設定
@user_agent = 'Mac Safari'
@wait_time = 5
@url = 'taget_url'

def http_connect(url, keyword)
  puts url if $DEBUG
  @page = nil;@price = nil;@content = ""
  begin
    @agent = WWW::Mechanize.new
    @agent.user_agent_alias = @user_agent
    @page = @agent.get(url)
  rescue
    puts "#{keyword}#{@drim}CONNECTION ERROR"
    return
  end
  link = @page.links.with.href(%r{http://target_url/\w+?/}).last
  puts link.href if $DEBUG
  if(link == nil || link.href.empty?)
    puts "#{keyword}#{@drim}LINKERROR"
    return
  end
  @page = @agent.click(link)
  doc = @page.root
  @name = (doc/"span.item_name").inner_html.tosjis
  (doc/"span.item").each {|item|
    item_str = item.inner_html.tosjis
    item_str.scan(/
(.*?)<\/div>
(.*?)<\/div>/){|title, content| @content += ":#{title}:#{content}" # if $DEBUG } item_str.scan(/([\d+] 円)/){|price| @price = price } puts "#{keyword}#{@drim}#{@price}#{@drim}#{@name}#{@drim}#{@content}#{@drim}#{link.href}" } end def generate_url puts ARGV[0] if $DEBUG File.open(ARGV[0]){|f| f.each{|line| keyword = line.chomp! puts keyword if $DEBUG target="#{@targeturl}?keyword=#{keyword}" http_connect(target, keyword) sleep @wait_time } } end puts @header generate_url

ECショップの検索結果から商品情報を取得することを想定しているのですが、どうもカタカナの「ッ」が全て文字化けしてしまう。kconvではなくnkficonvを使っても結果はおなじ。解決方法としては以下1行を挿入するだけで文字化けはおきなくなりました。

require 'jcode'

原因はまだ調べているところですが、以下サイトをきちんと理解できればわかると思います。はぁー、大分はまってしまった。

【参考サイト】

トラックバック(0)

このブログ記事に対するトラックバックURL(トラックバックは承認後に公開されます)

コメントする

このブログ記事について

このページは、Humが2007年12月16日 11:04に書いたブログ記事です。

ひとつ前のブログ記事は「マウスオーバーでメイン画像を切り替える(JavaScript innerHTML)」です。

次のブログ記事は「Excelでゼロパディング(0パディング)する方法」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

あわせて読みたいブログパーツ
フィードメーター - ウェブ-HACKS 「とりあえずやってみよう!」ブログ   
track feed
  • SEO対策 
  • _ 
  • _ 
  •  
  •  

このブログはクリエイティブ・コモンズでライセンスされています。