10

28

[Ruby] Amazonへのリンクから 書名と短いリンクを出力するプログラム

2012.10.28(16:37)

amazonの書籍へのリンクは全部なくても一部分で当該ページへジャンプできる。

たとえば、
http://www.amazon.co.jp/%E3%81%99%E3%81%94%E3%81%84Haskell%E3%81%9F%E3%81%AE%E3%81%97%E3%81%8F%E5%AD%A6%E3%81%BC%E3%81%86-Miran-Lipova%C4%8Da/dp/4274068854/ref=sr_1_1?ie=UTF8&qid=1351409286&sr=8-1
ではなくて、
http://www.amazon.co.jp/dp/4274068854/
でよい。

リンクから、書籍名と短いリンクを出力するプログラムを作った。
# coding: shift_jis
# Ruby1.9.3版

require 'rubygems'
require 'mechanize'

      link_list = <<"LINKS"
http://www.amazon.co.jp/%E3%81%99%E3%81%94%E3%81%84Haskell%E3%81%9F%E3%81%AE%E3%81%97%E3%81%8F%E5%AD%A6%E3%81%BC%E3%81%86-Miran-Lipova%C4%8Da/dp/4274068854/ref=sr_1_1?ie=UTF8&qid=1351409286&sr=8-1

http://www.amazon.co.jp/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0Haskell-Graham-Hutton/dp/4274067815/ref=sr_1_2?s=books&ie=UTF8&qid=1351409356&sr=1-2

LINKS

urls = Array.new
link_list.each_line { |line|
  if /\Ahttp/ =~ line then
    /dp\/(\d+\w{0,1})\// =~ line
    isbn = $1
    urls << "http://www.amazon.co.jp/dp/#{isbn}/"
  end
}

agent = Mechanize.new
#agent.set_proxy('10.0.1.2', 8080)
urls.each { |url|
  agent.get(url)
  title = agent.page.title
  puts title.sub(/\AAmazon.co.jp.\s/,"").sub(/: .\z/,"")
  puts "#{url}\n\n"
}

# ここまで
実行結果
すごいHaskellたのしく学ぼう!: Miran Lipovaa, 田中 英行, 村主 崇行
http://www.amazon.co.jp/dp/4274068854/

プログラミングHaskell: Graham Hutton, 山本 和彦
http://www.amazon.co.jp/dp/4274067815/


プロフィール

島敏博

Shima Toshihiro 島敏博
信州アルプスハイランド在住。HaskellとElixirが好き。組み込みソフトウェアアーキテクト、C++プログラマ、山歩き、美術館巡り、和食食べ歩き、日本赤十字社救急法指導員、インデックス投資、クラシック音楽、SESSAME会員、状態マシン設計、モデル駆動開発、ソフトウェアプロダクトライン、Rubyist、実践ビジネス英語

■ ツイッター
http://twitter.com/saltheads
■ Facebook
http://www.facebook.com/saltheads
■ Qiita
http://qiita.com/saltheads

印刷する場合は、ブラウザの印刷メニューではなく、このページの上から3cmくらいの青いところにある、「印刷」を押してみてください。少しうまく印刷できます。まだ完全ではないのですが、これで勘弁してください。


カテゴリ
最新記事
月別アーカイブ
最新コメント
検索フォーム
リンク
sessame
RSSリンクの表示