コード一覧

【Python】xserverとseleniumを使ってサーバー上でスクレイピング

スクレイピングを定期実行する方法3つ

【経緯】
seleniumを使って、スクレイピングできるようになった。
しかし、手動でやるのが不便。
定期的に決まった時間に自動でスクレイピング出来ないか?
【環境】
windows10 Python3

 

調べてみた結果3つの方法があった。

1.Windowsのタスクスケジューラ

タスクスケジューラから、実行ファイルをいつ、どのタイミングで実行するのか指定する方法。以下のような画面。

・ユーザーがログインしているときのみ実行する
・ユーザーがログオンしているかどうかにかかわらず実行する
この二つが選択可能。

パソコンが付きっぱなしなら、ログインしているときのみ実行する。でいいのですが、夜は寝ているし、ずっとパソコンを付けておくのも難しい。むしろノートパソコンだし、持ち歩きできなくなる。その時間だけパソコンを付けておくなら、手動で実行しても手間的にはあまり変わらない。
つまり、ログオンしているかどうかにかかわらず実行してほしい。

「ログオンしているかどうかにかかわらず実行」を選択したら出来るみたいだけど、共有フォルダの設定やブラウザの起動の仕様など、やたらと設定がややこしい。
追及してやったら出来るんだろうけど、難しそうなので、やらなかった。

2.別のPCを購入して電源つけっぱなし

タスクスケジューラはノートパソコンでやると不向きなので、別のPCを購入して、電源をつけっぱなしにして、実行すればいいんじゃないか?
と思ったわけです。
しかし、PCを置くスペース、PCを購入する代金、子供が線をいきなり抜いて潰れないか?などを考えると、リスクが大きいし、手間。そのためPCを購入して電源つけっぱなしにするのは物理的に難しいのでなしにしました。

3.サーバー上で定期的に実行

これをやってみようということで、xserverを契約しているので、xserverで実行しようと試みる。いろいろなブログを見て実験してみた。試したことは以下。

・xserverへSSH接続

https://www.xserver.ne.jp/manual/man_server_ssh_connect_tera.php
見ながら設定すると可能。初めての人はややこしいかもしれない。
僕はややこしかった。けど何とか見ながらやったら出来た。

・linuxbrewのインストール

https://qiita.com/Yuttti/items/987a9f28c5609d8f1c33
これも「xserver linuxbrew」と検索したら参考になるものが沢山出てくるので色々見ながらやると良いともう。
結構時間かかった。初めてやるなら2~3時間くらいは見ておいた方がいいかも。
インストールしたらpipが使えるようになるので、モジュールのインストールが出来るようになる。

・chrome driverをインストールする

「chrome driver xserver」で検索すると色々出てくる。コードもあって、ローカルでちゃんと動いていて、pipで必要なものもインストールしても、最後、chromedriverが突破出来ない。色々見ながら進めても、ブラウザがないからできません!となる。
SSH接続からlinuxbrewのインストールから5時間以上かけてチャレンジしていたが、最終ここでつまづいて出来なかった。

何かしらのブラウザをインストールしてやると、出来ないことはないと思う。しかしながら自分には無理だった。ここで、xserverでやるのは諦めました。
ネットを見ていると、herokuを使えばいいという意見が多かったのでherokuにチャレンジすることにしました。

Herokuとは?
https://jp.heroku.com/

Heroku はアプリの構築、提供、監視、スケールに役立つクラウドプラットフォームで、アイデアを出してから運用を開始するまでのプロセスを迅速に進めることが可能です。また、インフラストラクチャの管理の問題からも解放されます。

 

追記:Herokuに切り替えたらあっという間に出来た。
簡単な単体のスクレイピングの定期実行なら無料の枠内でいけるし、設定も簡単だし、次回はそのあたりをまとめたものを書こうと思う。