普段の業務に、週に一回とか一定の間隔で、複数のwebサイトから情報を収集し、レポートを作るっていう作業はありますか?
僕は最近、こういう作業を自動化して、速攻終わらせるスキルをついに手に入れたんです!
プログラマーっぽくて嬉しい!!

では、この自動化のやり方を、僕のアプリに貼ってるAppBankの広告の収益情報を取得してCSVで出力するという例で説明します!!

  1. ログインして、目的のページを取得する
  2. 目的のページから必要な情報を取り出す
  3. 必要な情報を出力する

今回必要なもの

・プログラム言語 Ruby
・情報を取得するライブラリ mechanize-2.7.0
プログラムでブラウザをエミュレートすることができるライブラリです。
今回は、rubyで使いますがperlとかphpとか他の言語でも使えます!
必要な情報を取り出すライブラリ Nokogiri 1.6.0
Htmlからテキストを取り出す為に使います。他の言語でも似たようなものはありますね!

準備

各処理を書く前に、ライブラリを読み込みます。

 

ログインして、目的のページを取得する

ログインしないと見れない情報を取得するために、ログインします!
はじめに、mechanizeのインスタンスを作りましょう!

次に、ログインページを取得して、フォームにログイン情報を入力し、送信します。

agent#getの引数が表示するurlで、form_withの引数にformタグのname属性を設定しています。

ユーザ名とパスワードが正しければこれでログインできました!!

それでは、必要な情報があるページを取得しましょう!
mechanizeのインスタンスにログイン情報を保持しているため、
ログインが必要なページでも開くことができます。

今回は、その月のimpと収益を表示する画面を取得してます。

 

目的のページから必要な情報を取り出す

Nokogiriを使って取得したページのなかから、必要な情報を抽出します。
要素を指定するときは、jqueryみたいにcssで指定できます!

 

必要な情報を出力する

今回はCSVで出力してみましょう!

まとめ

これでいままでの1時間のうち59分を別の仕事で使えるようになりますね!プログラマーっぽい!!

mechanize

主に、WEBサイトやスマホアプリの構築に従事。新たな技術を積極に取り入れ、プロジェクトに貢献。テック系の情報などにも精通しており、世界で通用するスーパーハッカーを目指している。2009年、株式会社ヘッドウォータース新卒入社。

twitter: @yujiroarai
qiita: @yujiroarai

このエントリーをはてなブックマークに追加