当サイトの記事には広告が含まれている場合があります

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

 
以前、「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分おきに楽天ランキングのキャプチャを取ることに成功しました。

Pythonで自動化はとても便利です。他にもいろいろと自動化をして便利になりたい方、Pythonの勉強をしたい方は、無料で入門講座を開いているスクールがあります。

目次に戻る

くるりん

新入社員の頃にシステムエンジニアの会社に入社。その後、WEB制作系の仕事に転職しました。

くるりんをフォローする
python楽天
スポンサーリンク
くるりんをフォローする
Memorandums