ファイナンスドッグログ

ファイナンスドッグログ 犬好きプログラマの兼業投資記録

【python】楽天ウェブ自動検索システムを作りました。

楽天で検索するとポイントがザックリたまるんですよ。そこで、自動化するプログラムをpythonで書きました。

 

f:id:yydairy:20190425191928j:plain

ウェブ検索画面→ランダムにキーワード入力→検索

という順番にプログラムを回しています。

楽天の検索システムは楽天ウェブ検索ツールバーを通して数回単語検索すると、最大「30口」たまり、最大「5ポイント」楽天スーパーポイントにたまるシステムです。

125万ポイント山分け!とありますが、最大1日30口までです。

2019/6/30

19口でも5ポイントたまることが確認されました。

1日5ポイント…30日で150ポイントか…。と思った方もいることでしょう。

実は月に1万5000円積立投資をして、ポイントをもらう金額と同じなのです。

複利として150ポイント×12ヶ月=1800ポイントとなります。

まぁ…続けてみましょう笑

今回はInternet Explorer を使います。google chromeだと拡張機能を使わなくてはなりませんし、最大5口(1ポイント)しかたまりません。

今回はログイン済みを対象としています。

Internet Explorer楽天にログインすると、ログアウトするまでずっと会員情報を保持しているようです。

Selenium モジュールで今回はInternet Explorer を使います。google chromeだと拡張機能を使わなくてはなりませんし、最大5口(1ポイント)しかたまりません。

ログインを保持しないと、楽天のログインページのID、パスワードの入力に、とんでもないsendkey の遅さにみまわれます。1文字5秒ぐらいです。笑 

さて、準備です。

①IEDriverServerをダウンロードしてDドライブ直下にdriverフォルダを作り、そこにIEDriverServer.exeファイルを入れてください。

下記のリンクから太字の32bit.verを選択してください。

The Internet Explorer Driver Server
This is required if you want to make use of the latest and greatest features of the WebDriver InternetExplorerDriver. Please make sure that this is available on your $PATH (or %PATH% on Windows) in order for the IE Driver to work as expected.
Download version 3.14.0 for (recommended) 32 bit Windows IE or 64 bit Windows IE
CHANGELOG

楽天ツールバーInternet Explorerダウンロード

③IDELを起動して、コードをコピーペーストして、適当な名前をつけて保存。

④pyファイルを起動し実行。

以上になります。簡単でしょう。最下部にコードの詳細があります。

 

ここからは、コードを作成するまでの概要になります。参考にしたい人は見て下さい。飛ばしたい方は下にスクロールして下さい。

1、ログイン情報ページから自動で入る

自動で入るコードはこちらになります。

from selenium import webdriver

from selenium.webdriver.common.by import By

from selenium.webdriver.support.ui import WebDriverWait

from selenium.webdriver.support import expected_conditions as EC 

from selenium.webdriver.common.keys import Keys



driver = webdriver.Ie("c:/driver/IEDriverServer.exe")

driver.get("https://grp03.id.rakuten.co.jp/rms/nid/login?service_id=r12&return_url=login?tool_id=1&tp=&id=")



elem_search_word = driver.find_element_by_name("u")

elem_search_word.send_keys("※※※※※")



password = driver.find_element_by_name('p')

password.send_keys("※※※※")



elem_search_word = driver.find_element_by_name("submit").click()

下記※にあなたのID

elem_search_word = driver.find_element_by_name("u")

elem_search_word.send_keys("※※※※※")

下記※にあなたのパスワード

password = driver.find_element_by_name('p')

password.send_keys("※※※※")

これで自動で入れます。

 

2、キーワードを取得する

熟語が羅列されてるサイトなら何でも良いのですが、価格ドットコムのランキングから取りました。

下記がプログラムです。<a>タグを巡回するコードにしました。

#access to kakaku.com

from selenium import webdriver



driver = webdriver.Chrome("c:/driver/chromedriver.exe")

driver.get("https://kakaku.com/keyword/")

for a in driver.find_elements_by_tag_name("a"):

    print(a.text)

driver.quit()

 

3、取得したキーワードをエクセルに貼り整形する。

行列の入れ替えをして

メモにコピー&ペーストします。

検索置換で検索を「空白(タブ)」をコピーしてペーストします。

置換は「”,”」を入力。

結果、内包リストの出来上がりです。

上記の説明は補足説明で、実際にコードを写したりする必要はありません。すでにコード中にキーワードリストは記載してあります。

製作環境:win7 32bit python3.7.2 IDLE

下記をコピーペーストしてください。

# coding: utf-8



from selenium import webdriver

from selenium.webdriver.common.by import By

from selenium.webdriver.support.ui import WebDriverWait

from selenium.webdriver.support import expected_conditions as EC 

from selenium.webdriver.common.keys import Keys

from time import sleep

import random



#楽天ウェブ検索に接続

driver = webdriver.Ie("c:/driver/IEDriverServer.exe")

driver.get("https://websearch.rakuten.co.jp/?l-id=header_left_top_logo")

driver.implicitly_wait(10)



#キーワードを30回自動入力して検索

for i in range(32):

    #200のキーワードからランダムに抽出

    keywordlist = ["ホーム","ポケトーク","4kチューナー","ipad","ipad mini","ネックスピーカー","α7iii","airpods","ipad air","翻訳機","ps4","windows10","ps4 本体","防犯カメラ ワイヤレス 屋外","ウェアラブルネックスピーカー","デジタルサイネージ ディスプレイ","モバイルディスプレイ","液晶テレビ 50インチ","血糖値測定器","ps4pro 本体","物置","プリンター","電気温水器","psvr","ipadmini","sv12ff","三輪 電動アシスト自転車","145r12 6pr","家庭用防犯カメラ","プロジェクター","ワイヤレスインターホン 無線インターホン","ポータブル電源","iphone8","bwv80c","ルンバ","surface go","SRS-WS1","フロントラインプラス","ドライブレコーダー バイク 防水","ミニ耕運機","apple pencil","ジャンプスターター","ログハウス キット","電話 録音機","50インチ モニター","フォーマル ミセス スーツ 50代","surface pro","セグウェイ","紙折り機","コンクリート 平板","キャノン 純正インク","枝 粉砕機","nebs1500","TS8230","ニンテンドースイッチ 本体","カラオケ 機器 家庭用","gopro","ipad pro","bwv70c","パーリーゲイツ キャディーバッグ","ドクターエア","手元スピーカー ワイヤレス","ウォークマン","夢ゲンクール","自転車通学 カッパ","4kテレビ 50インチ","フル電動自転車","ドクターシーラボ 200g","ca-dr150","60代 フォーマル ミセス 結婚式","物置 屋外","真空包装機 業務用","dyson v10","ウォシュレット","人工芝 ロール","シュレッダー 家庭用","ドローン カメラ付き","折りたたみ 自転車 超軽量","パルスオキシメーター","ドアスコープ カメラ","レ・ー・ダ・ー 探知器","おしゃれ 倉庫 屋外 物置","th55fz950","ipad mini キーボード","ダイソン","ps4 pro","タイヤチェンジャー","階段 昇降機","RX0","波板 トタン","auto-vox","ポータブル電源 suaoki","4tc50aj1","bwv100c","D850","シャワーヘッド マイクロバブル","bluetooth トランスミッター","mrovs8","タイヤ空気圧 モニタリングシステム","物置 倉庫","スピーカーセレクター","ポケトーク","夢ゲンクール","α7iii","棒寒天","血糖値測定器","電話 録音機","クリスチャンオリビエ バック","ポータブル電源","パルスイクロス","翻訳機","育苗器","プリンター","一本満足","ha-sd70bt","セグウェイ","モバイルディスプレイ","電気温水器","アイコス","液晶テレビ 50インチ","ドライブレコーダー バイク 防水","紙折り機","宅配ボックス","sv12ff","cbdオイル","コンクリート 平板","WH-1000XM3","EX-LD321DB","eos kiss x10","防草シート","枝 粉砕機","診断機 自動車","デジタルサイネージ ディスプレイ","ブラウン 洗浄液","絵の具 セット 小学校","人工芝 ロール","SSD 2tb","自転車通学 カッパ","ミニ耕運機","gopro","太陽光発電 ソーラーパネル","階段 昇降機","ジャージ上下 メンズ","酸素濃度計","遺伝子検査キット","145r12 6pr","ミラー型ドライブレコーダー","ipad 2018","surface go","グッドラックソファ","ウォシュレット","波板 トタン","頭皮マッサージ機","dmrbw550","シックスパッド","網戸 お掃除ローラー","TS8230","無線機 アマチュア無線","自転車通学 カッパ リュック","薬 フィラリア","ポケトーク 翻訳機","口臭チェッカー","リチウムイオン充電池 18650","コックリング","auto-vox","a3 複合機","bwv100c","メスティン","冷凍ストッカー 業務用","UNX-9130","レーザー彫刻機","ipad キーボード カバー","windows10","物置","耐火レンガ","キャノン 純正インク","タイヤ空気圧 モニタリングシステム","サイクルポート","ps vr","ケイカル板","ポータブル電源 suaoki","iphone8","レ・ー・ダ・ー 探知器","ワイヤレスインターホン 無線インターホン","ドクターエア","ポータブル電源 大容量","玄関ドア","ジンバル","ipad mini キーボード","5セカンズシャイン","200m 黒マルチ","家庭用防犯カメラ","ゲーミングモニター","iphone10","iphone7","navx9900","ワイヤレスマイク bluetooth","gps ロガー","麻雀卓 折りたたみ","土留め"]

    sleep(2)

    search_word = driver.find_element_by_name("qt")

    sleep(2)

    search_word.send_keys(random.choice(keywordlist))

    sleep(3)

    search_word.send_keys(Keys.ENTER)

    sleep(4)

    search_erase_icon = driver.find_element_by_xpath("//*[@id='cbtn']").click()

    sleep(5)

print("終了")

IEでは重たい動作が続いたり不安定になることもあります。

その際は一度閉じて、やり直しをかけるか、スリープモジュールのsleep(2)を(4)にしたり少し秒数を変えてみたりして調節してみてください。

※筆者はいかなる利益・責任を負うことはできません。

予めご了承願います。

【note】
https://note.mu/merukari_/n/n1a11618e1f46

 【qiita】

https://qiita.com/financedog1/items/9b22d68c3246e51643cc