Web サイトを自動的にスクロールしたいと思ったことはないですか?
腱鞘炎の方や、ごはん食べながらWebサイトを見たい方は必見です。
ここではプログラムを使って自動的にスクロールする技を紹介します。
デモとして、Google検索で出てきた大量の猫の画像一覧で自動的にスクロールするプログラムを説明します。
使用するプログラム言語
使用するプログラム言語はPython(パイソン)です。
事前にPythonをインストールする必要があります。
詳しくは本の178ページの「Pythonの導入」をご覧ください。
プログラムのダウンロード
プログラムファイルをダウンロードしてください。
ダウンロードしたファイルを実行してください。メモ帳などでテキストが表示されます。
この時点でプログラムは起動しないので大丈夫です。
解説はこれを見ながら行います。
プログラムを実行したい場合は拡張子をtxtからpyに変えからダブルクリックしてください。
例) 77-python-scroll-1.txt → 77-python-scroll-1.py
プログラムの流れ
今回のプログラムでは繰り返しを20回に設定しています。
※無限ループにしないためです。
やめたいときは強制終了でできます。
プログラムの解説
ここからは先ほどダウンロードしたプログラムを、1行ずつ解説していきます。
まずはモジュールのimport
importして導入するモジュールです。
import pyautogui
import sys
pyautoguiはキーを押したりマウスを動かしたりする関数が詰まったモジュールです。
sysはプログラムを終了したいときなどに使うモジュールです。
処理速度の設定
pyautoguiの処理速度を1秒に設定します。
pyautogui.PAUSE = 1
これで1秒ごとに1つのプログラムが動作します。
例えば、1秒経ったらwindowsキーを押し、その1秒後に上方向を押す、という感じです。
動きが遅い、0.5秒ごとにしたいのであれば秒数を1から0.5に変更すればできます。
ただし、早すぎるとキーが処理速度についてこれなくなるので、せいぜい0.5から1の間で行うとよいでしょう。
以下はプログラムの作りです。
PAUSEはすべて大文字ですので注意してください。
プログラム開始の確認
プログラムを開始したら、まずは開始していいかどうかの確認用メッセージボックスを表示させます。
間違えて起動した場合にすぐに終了できるようにするためです。必須のプログラムではないのですが便利なので付けています。
プログラムは以下のとおりです。
kaitou = pyautogui.confirm('3秒ごとに自動で下にスクロールするプログラムです。起動しますか?')
if kaitou == 'Cancel':
pyautogui.alert('プログラムを中断します')
sys.exit()
それぞれ以下のように機能してます。
順番に解説します。
1.メッセージボックスとその回答
プログラムを開始したら開始してよいかどうかのメッセージボックスを表示して、そのあとOKボタンが押されたかキャンセルボタンが押されたかの結果を得るようにします。
kaitouは結果を保管するための変数です。
pyautogui.confirm(‘…’)はメッセージボックスを表示する関数です。
結果はOKボタンならOKの文字列、キャンセルボタンならCancelの文字列が入ります。
pyautogui.confirm( )の関数の作りは以下のとおりです。
最初はモジュール名のpyautoguiと書き、そのあとドット「.」でつなげて、関数名のconfirm( )を書きます。( )内には伝えたいメッセージを入力します。メッセージはクオテーション「’」で囲って下さい。
2.回答がキャンセルかどうかチェック
ここでは変数のkaitouがCancelかどうかをチェックしています。
以下プログラムの作りです。
最初にifを書きます。
条件式にはkaitou == ‘Cancel’ と書き、変数のkaitouの中身がCancelかどうかをチェックします。
注意として、=は2つ繋げて==と書きます。
最後にコロンを書きます。これがないと機能しません。
変数のkaitouの中身がCancelだった場合はその下にある字下げされたプログラムを処理します(次で説明します)。違ってれば字下げされたプログラムを無視して飛ばします。
3.キャンセルならプログラム中断
キャンセルボタンが押されたときはプログラムの中断メッセージボックスを表示して終了します。
以下プログラムの作りです。
最初に字下げをします。
ifで条件に合った場合はこの字下げされたプログラムを実行します。
条件に合わなかった場合は字下げされていないプログラムのところまでジャンプします。
字下げは半角スペース4回分、もしくはTabを1回押して字下げします。
pyautogui.alert( )はメッセージボックスを表示する関数です。
先ほどのconfirm( )の関数とほとんど同じですが、ボタンがOKしかありません。
sys.exit()はプログラムを終了する関数です。終了する際はこのまま書けばOKです。
対象のウィンドウを選ぶ
キャンセルせずに進めた場合は説明用のメッセージボックスが表示されます。OKを押すと5秒後に自動スクロールが始まりますので、OKを押す前にスクロールさせたい画面を表示させます。
プログラムは以下のとおりです。
pyautogui.alert('OKを押すと5秒後にスクロールが3秒ごとに20回実行されます。')
pyautogui.sleep(5)
pyautogui.sleep(5)は5秒間停止する関数です。
もっと長く停止したい、10秒停止したいときは5のところを10と変えればOKです。
注意ですが、この停止中にプログラムを中断したいときはフェールセーフ以外で行ってください。pyautoguiの関数ではあるのですが、sleep( )関数にはフェールセーフが効かないようです。
スクロールの繰り返し
画面を下にスクロールするpagedownキーを繰り返し押すようにします。
今回は永遠に押し続けることがないよう20回でストップするようにします。
プログラムは以下のとおりです。
for kaisuu in range(20):
pyautogui.sleep(3)
pyautogui.press('pagedown')
解説は以下のとおりです。
1.処理を20回繰り返す
繰り返しはforを使います。
以下作りです。
最初にforを書きます。
kaisuuは繰り返した処理の数を数える変数です。
※正確には違いますがここではその理解で大丈夫です。
in range(20)は初期設定で、数値の20は20回繰り返すということです。
※これも正確には違いますが…大丈夫です。
20回じゃ少ない、100回にしたい場合は20を100に変えればOKです。
forの行の下に字下げしたプログラムを書き、その字下げしたプログラムを繰り返し処理します(次に解説)。
2.処理されるプログラム
forの繰り返しの中で、3秒待ち、pagedownキーを押して下にスクロールするようにします。
pyautogui.press(‘pagedown’)はpagedownキーを押すプログラムです。
その作りです。
最初にモジュール名を書き、ドットを書き、関数名を書きます。
pagedownキーだと行き過ぎる、下方向キーにしたい場合はpagedownをdownに変更します。
例)pyautogui.press(‘down’)
プログラムの終了
最後にプログラムが終わったことを知らせて終わらせます。
サンプル動画
使い方はこんな感じになります。
まとめ
画面を自動的にスクロールするプログラムを紹介しました。
また、プログラムの作りやその機能についての説明をしました。
動画を見ながらイメージがつかめるとやりやすいと思います。
わからないことなどありましたらお問い合わせからご連絡ください。