15分おきに楽天ランキングのキャプチャを自動で取る方法ー改変


以前、「15分おきに楽天ランキングのキャプチャを自動で取る方法」という記事を書きました。

15分おきに楽天ランキングのキャプチャを自動で取る方法
楽天ランキングで1位を取った画像を商品ページにアップしている店舗さんは多いですよね。 楽天リアルタイムランキングは15分置きに更新...

上記方法でもキャプチャできるのですが、下記のことからpythonでキャプチャ取るように修正しました。

  • サイズ調整がうまくできていない
  • 文字のジャギーが目立つ

pythonとseleniumのインストール

今回は、Windowsでの方法のみ書きます。
Macはもう手元にないので、今後のこのブログはWindowsのみの記述になるかと思います。

pythonのインストールは下記ブログを参考にしました。
Pythonのインストール方法[Windows]

Windowsはpathを通すのが面倒だったりするんですが、チェックを忘れずに入れておけば問題なく動くようになりました。

続いて、seleniumのインストールです。
これは、上記ブログ「Pythonのインストール方法[Windows]」にも記載してありますが、コマンドプロンプトで pip install ライブラリ名 と入力すればインストールできます。
今回は pip install selenium と入力してインストール完了です。 

chromeドライバ

chromeドライバを入れます。
https://sites.google.com/a/chromium.org/chromedriver/downloadsからダウンロードします。

Latest Release: ChromeDriver 2.38 のChromeDriver 2.38をクリックします。

OSによって使えるchromeドライバのリストが表示されます。
私はwindows10なのでchromedriver_win32.zipをダウンロードしました。

解凍すると、「chromedriver.exe」ファイルがあるので、任意の位置に格納します。
私は「c:/chromedriver_win32/」に格納しました。
格納先を後ほどpythonプログラムで指定します。

各ファイルの説明

自動キャプチャに必要な各ファイルを作成していきます。

list_dic.csv – キャプチャしたいページリスト

キャプチャしたいリストをcsv形式で作成します。
csvを辞書型で読み込みたいので、1行目は項目名を記述します。

項目名は、pythonプログラムで指定します。 

rakutenRank.py – pythonで実行するプログラム本体

import time
from datetime import datetime
import csv
import os
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import sys

#パラメータ取得
args = sys.argv
argc = len(args)

options = webdriver.ChromeOptions()
# 必須
options.add_argument('--headless')
options.add_argument('--disable-gpu')
# エラーの許容
options.add_argument('--ignore-certificate-errors')
options.add_argument('--allow-running-insecure-content')
options.add_argument('--disable-web-security')
# headlessでは不要そうな機能
options.add_argument('--disable-desktop-notifications')
options.add_argument("--disable-extensions")
# UA
options.add_argument('--user-agent=hogehoge')
# 言語
options.add_argument('--lang=ja')

# プラウザ起動(Chrome)
options.add_argument("--window-size=990, 1036")
driver = webdriver.Chrome(chrome_options=options,executable_path="c:/chromedriver_win32/chromedriver.exe")

#csvファイル読み込み
if argc != 2:
    csv_file = open("./list_dic.csv", "r", encoding="shift_jis", errors="", newline="" )
else:
    if args[1] == "dayly":
        csv_file = open("./list_day_dic.csv", "r", encoding="shift_jis", errors="", newline="" )

f = csv.DictReader(csv_file, delimiter=",", doublequote=True, lineterminator="\r\n", quotechar='"', skipinitialspace=True)

folder = datetime.now().strftime("%Y%m%d-%H%M%S-pc") + "/"
os.mkdir(folder)

# リストからURLをひとつづつ処理
for row in f:
    #1行目の項目名を指定
    TITLE = row['FILE']
    URL = row['URL']
    # ドメインの一部をファイル名として設定
    file_name = TITLE + ".png"
    # URLを開く
    driver.get(URL)
    # ウィンドウサイズとズームを設定
    driver.set_window_size(990, 1036)
    driver.execute_script("document.body.style.zoom='100%'")
    # 読み込み待機時間
    time.sleep(2)
    # imagesフォルダにスクリーンショットを保存
    driver.save_screenshot("./" + folder + file_name)

# プラウザを閉じる
driver.quit()

rakutenRank.bat – タスクスケジューラで指定するコマンド

デスクトップにtestフォルダを作成して必要なファイルを保存しておきました。

rakutenRank.batというファイル内には下記コマンドを記述しています。

cd C:\Users\ユーザー名\Desktop\test
python rakutenRank.py
exit

pythonプログラム本体はパラメータ指定で読み込むページリストファイルを変えるよう作りました
list_dic.csvにはリアルタイムランキングで取得したいURLリストを記述していますが、list_day_dic.csvにはデイリーランキングで取得したいリストを記述しておきました。
リアルタイムランキングは上記コマンドで起動させ、デイリーランキングは下記コマンドで実行可能です。

cd C:\Users\ユーザー名\Desktop\test
python rakutenRank.py dayly
exit

cronみたいなものを設定

Windowsでは、タスクスケジューラを使用します。

Cortana(コルタナ)の検索窓に[タスク]と入力して、見つかった[タスク スケジューラ]をクリックします。

[タスクスケジューラ ライブラリ]を右クリック→[タスクの作成]をクリックします。

[全般]タブの名前は任意名を記載します。
ユーザーログオンしていないときも動いてほしかったので、[ユーザーがログオンしているかどうかにかかわらず実行する]を選択しました。

[トリガー]タブに詳細の日時を記載します。楽天のリアルタイムランキングは15分おきに更新されるので、繰り返し間隔を[15分間]に設定します。

[操作]タブにrakutenRank.batを指定します。

これで15分おきに楽天ランキングのキャプチャを取ることに成功しました。
お疲れ様です。

スポンサーリンク
ad
ad

シェアする

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

フォローする

スポンサーリンク
ad