Page-level ads

『Rubyによるクローラー開発技法』を読んで DeNA ショッピングのタイムセールを自動設定してみる – つまさぽ(妻のサポート)

技術

『Rubyによるクローラー開発技法』を読んで DeNA ショッピングのタイムセールを自動設定してみる

投稿日:2015年3月31日 更新日:

ws-pc-top

Rubyを使ってタイムセールを自動設定するツール

はじめに

『Rubyによるクローラー開発技法』でお勉強中です。

憧れのスクレイピングを習得したくて、この本を購入しました。

試しに作ったツールが、DeNAショッピングのタイムセールを自動設定するツールです。

DeNAショッピングでは、月に1度、タイムセールの設定商品数の制限を解除することができます。

しかし、一度にCSVで登録できる商品数は100件までです。

タイムセールを4000件登録する場合は、CSVファイルを40個作成し、40回登録する必要があります。

かなり面倒です。。。(自分だけ?)

そこで、ブラウザを操作してタイムセールを設定するツールを作成してみました。

ちなみに購入した『Rubyによるクローラー開発技法』は、即日、定規とカッターで裁断し、ScanSnap で電子化。iPad & iPhone6 & Mac で読み進めています。

そして、裁断した本は、【裁断済み】としてAmazon マーケットプレイスに出品→翌日に注文と、経費を最小限に抑えることができました。

ws-pc-more

DeNAショッピング タイムセール 自動設定ツール の使用動画

DeNAショッピングのタイムセール自動設定ツールを使用している動画をとりました。

4分35秒の動画です。

DeNAショッピング タイムセール 自動設定ツール の使い方

ターミナルから以下のコマンドでツールを起動します。

※ ‘$’は入力不要です。

moreと入力し[enter]を押します。

すると指定のページ数分タイムセール対象商品として設定され、指定開始時刻から指定終了時刻まで指定の割引率で登録されます。

その後、再び[more or end?]と聞かれるので、

[more]を入力すれば更に指定ページ分のタイムセールが設定され、

[end]を入力すればタイムセール設定を終了します。

 環境

実際に動作させた環境は以下です。

OS Mac OSX※以下、Ruby環境が構築できれば、他のOSでもOKのはずです。
ruby ruby 2.1.2p95
capybara capybara (2.4.4)
ブラウザ Firefox

 

 

Mac OSX での Ruby ブラウザシミュレーション 環境構築

Firefox のインストール

ブラウザはFirefoxを使用しますので、Firefoxをインストールしてください。

Firefox

Command Line Tools for Xcodeのインストール

Downloads for Apple Developers からOSに合わせた Command Line Tools をダウンロードし、インストールしてください。

後述の Homebrew よりも前にインストールする必要があります。

以下のサイトが参考になります。

初心者でもできた!Ruby on Rails開発環境の構築方法(Mac編)

Homebrew のインストール

ターミナルを起動しましょう。

[ctrl]+[space] で Spotlight を起動し、「terminal」と入力し、[enter] を押すとターミナルが起動します。

起動したら以下を実行しましょう。

上記のコマンドは変更する可能性がありますので、Homebrew から直接コピーすると問題なくインストールできると思います。

rbenv のインストール

Mac OSX にデフォルトでインストールされている Ruby は古い(v1.9ぐらい?)です。

新しいRubyをインストールするために、Rubyのバージョン切り替えコマンドであるrbenvをインストールします。

Ruby のインストール

以下のコマンドでインストール可能なRubyのバージョン一覧を表示します。

以下のコマンドで新しいバージョンのRubyをインストールします。

以下のコマンドでバージョンを確認してみましょう。

おそらくバージョンが古いままだと思います。

以下のコマンドで使用する Ruby のバージョンを設定しましょう。

もう一度、以下のコマンドでバージョンを確認してみましょう。

今度は Ruby のバージョンが2.1.2になっていると思います。

Nokogiri のインストール

※MacOSX10.10の場合です。

Poltergeist のインストール

以下のコマンドで Poltergeist をインストールします。

ちなみに Capybara も Poltergeist と一緒にインストールされます。

selenium-webdriver のインストール

以下のコマンドで Poltergeist をインストールします。

PhantomJS のインストール

以下のコマンドで Poltergeist をインストールします。

環境構築は以上です。(確か。。。)

ソース

以下が DeNA ショッピングでタイムセールを自動設定するソースです。

任意の名前(例:dena-timesale.rb)で保存します。

ソースの ### Please Config! (x) のところを設定する必要があります。

初期設定

ツールを起動する前に以下の初期設定が必要です。

### Please Config! (1)

YOUR_ID に DeNA ショッピングのログインID を設定してください。

### Please Config! (2)

YOUR_PASSWORD に DeNA ショッピングのパスワードを設定してください。

### Please Config! (3)

タイムセールの開始日時を指定してください。

以下は、2015/3/25 10:00 開始の場合です。

### Please Config! (4)

タイムセールの終了日時を指定してください。

以下は、2015/3/30 6:00 終了の場合です。

### Please Config! (5)

割引率を設定します。

以下は、10%割引の場合です。

### Please Config!   (6)

start_page にタイムセール対象商品を設定する開始ページを設定します。

タイムセールの対象商品の設定は、40商品ずつ表示され、1ページ目から処理していきます。

また、タイムセール対象商品は一度に選択できる商品数に限りがあるようです。

なので、一度に設定する商品は20ページ(800商品)におさえています。

設定する商品数を抑えたい場合は、set_page でコントロールしてください。

※出品商品数以上にタイムセール対象商品を選択してしまうようにset_page を指定した場合の動作は保証しません。

DeNA ショッピングタイムセールを自動登録してみよう

ソースを以下の様に保存したとします。

ターミナルを起動し、ソースを保存したフォルダに移動する。

ターミナルを起動し、以下のようにフォルダを移動します。

ツールを起動する

以下の様に入力し、ツールを起動します。

するとFirefoxが起動し、ログインします。

more or end?

以下のように表示されます。

more と入力し、[enter]を押します。

start_page で指定したページまで移動します。

その後、set_pageで指定したページ数分の商品(set_page × 40商品)をタイムセール対象商品に設定します。

対象商品の設定が完了したら、開始時刻、終了時刻、割引率を設定し、再び more or end? を表示して入力待ちになります。

more を入力すると、start_page + set_page から更に set_page 分 タイムセールを設定します。

end を入力するとツールが終了し、ブラウザも閉じます。

以上が使用方法になります。

注意事項

本ソースは全くエラー処理が考慮されていません。エラーが発生するとターミナルにエラーが表示されブラウザが閉じます。

その場合は、初期設定を見なおしてください。

また、万が一、本記事、本ソースにより不都合な事象が発生しても、当方は責任をとりません。

自己責任でお願いいたします。

終わりに

いかがでしょうか。

今回参考にしたのはこちらの本です。

Rubyによるクローラー開発技法 巡回・解析機能の実装と21の運用例
るびきち,佐々木 拓郎 SBクリエイティブ 2014-08-25
売り上げランキング : 23939

by ヨメレバ

 

Webページに対しプログラムで何ができるのかを理解することができます。

ソースに関して、コメントアウトしている以下の部分で並び替えをすることができます。(ただし、並び替えてうまく動作するかはわかりませんが)

また、ソースの末にあるloop部分を改造すれば、moreを入力しなくても好きな商品数を登録することができます。

getsを使って、登録したいページ数を入力する様に改造することもできるでしょう。

これを機会にRubyについて学んでみても良いのではないでしょうか。

ws-pc-btm

ws-pc-btm-right

-技術
-,

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

Ubuntu18.04 LTS で VNC接続設定時に failed to commit changes to dconf が発生した際の対処法

Windows10もしくはMacOSからUbuntu 18.04 LTSにリモート接続(リモートデスクトップ)してみたを参考に、Ubuntu18.04 LTSにVNC接続を試みましたが、手順中で警告が …

macOS Sierraでkivyをインストールする方法とpip install kivyでエラー発生時の対処法

macOS Sierraでpip install kivyするとエラーが発生したので、その対処法を残しておきます。 そういえば、High Sierraにアップグレードしていないなあ。。。

旧型Mac に SSDとSSHDを装着しFusion Drive 作成する方法

Macbook Pro 15-inch Late2011 が手に入ったので、大人なカスタマイズをすることにしました。

Mac Pro 2009 で Gainward GeForce GTX 680 Phantom HDMI オーディオ音声出力を有効にする方法

ヤフオクで念願のMac Pro 2009 を手に入れました。 グラボは GeForce GTX680 ですが、HDMI接続しても音声が出力されません。。。 その対処法を記しておきます。

Elasticsearch 5.1.1 で elasticsearch-head を使う方法

Windows 環境で Elasticsearch の勉強中です。 elasticsearch-head を導入しようとしたのですが、ここでもハマったので備忘録として残しておきます。

ws-pc-side-top

ws-pc-side-btm