気になるガジェット

気になるガジェットについて簡単にまとめたメモブログです

IQOSphereのいいねボタンでコインズ取得処理をSeleniumとGo言語で自動化する方法【PART1】

f:id:the_beatles:20170508165351j:plain:w1000

ちょっとBlogに飽きてきていましたが、有益な情報を共有できそうなため、久しぶりに記事を更新します。

2月にIQOSを購入してからは、コインズを貯めるために毎日IQOSphereでいいねをクリックしております。

この手の作業って、文章なんて読まずに上から順番にいいねをクリックするだけなので、面倒な作業の上にページの表示速度が遅いため、自動化できたらいいなって思ったことはないでしょうか?

プログラムを経験されたことがあるなら、ちょっと勉強するだけで面倒な作業を自動化できるので、こちらの記事を参考にスクリプトを書いて楽に毎日のコインズゲットしていただけたらと思います。

SeleniumとPhantomJS(ヘッドレスブラウザ)をインストールする

僕はMacを使っているのでWindowsはわからないですが、同じような感じでSeleniumとPhantomJSをインストールしてください。

brew update
brew install phantomjs
brew install selenium-server-standalone

Go言語でログインまでのコードを書いて動作を確認する

まだSeleniumとGo言語の勉強中ということと、IQOSphereって結構JavaScriptで書かれているので結構面倒なため、今の所できているのはストーリーページを表示してスクリーンショットを撮るまでとなっております。

package main

import (
    "github.com/sclevine/agouti"
    "log"
    "time"
)

func main() {

    // PhantomJSのWebドライバ取得
    driver := agouti.PhantomJS()
    if err := driver.Start(); err != nil {
        log.Fatalf("Failed to start driver:%v", err)
    }
    defer driver.Stop()
    page, err := driver.NewPage(agouti.Browser("phantomjs"))
    if err != nil {
        log.Fatalf("Failed to open page:%v", err)
    }

    // ログインページ表示
    if err := page.Navigate("https://iqosphere.jp/login"); err != nil {
        log.Fatalf("Failed to navigate:%v", err)
    }

    // ログイン処理
    login_id := page.FindByName("login_id")
    password := page.FindByName("password")
    login_id.Fill("** あなたのID **")
    password.Fill("** あなたのPW **")
    if err := page.FindByClass("form-basic").Submit(); err != nil {
        log.Fatalf("Failed to login:%v", err)
    }

    // ログインに時間がかかるので20秒間待ちます
    time.Sleep(20 * time.Second)
    
    // ストーリーページに遷移
    if err := page.Navigate("https://iqosphere.jp/community/stories/"); err != nil {
        log.Fatalf("Failed to navigate:%v", err)
    }

    // スクリーンショット取得
    page.Screenshot("Screenshot01.png")
    
    // 次の処理は次回のエントリーでご紹介します
}

作成したプログラムを実行する

Go言語の実行環境が整っているという前提になりますが、以下のコマンドで実行することができます。

go run pg_name.go

実行後のスクリーンショットは以下になります。

f:id:the_beatles:20170508171532p:plain:w300

まだ荒削りで申し訳ありませんが、もう少し勉強して内容を充実させていきたいと思います。