【備忘録】AWS EC2でpython+selenium+chromeでスクレイピング

Posted by yonezo in 日記 | Leave a comment
Pocket

久しぶりの更新がこれかよですが、何かの約に立つかなと。

目的:

とあるサイトへのスクレイピング。

pythonはほぼ初めてだったが、まぁスクレイピングくらいならそれほど難しくはないですね。

やったこと:

とあるサイトにヘッドレスchromeで接続し、CSVをダウンロードする、というものです。

とりあえずEC2立ち上げ。

これは特に凝ったことはせず、とりあえずAmazonLinuxなインスタンスを立ち上げ。

ec2-userでログインしたら、以下実行。

※python3、pip3はデフォルトで入っているので、省略です。
 
確認は
 
python3 -V
 
もし無かったら
 
yum install python3
 
pip3の確認は
 
pip3 -V
 
ここからが本番。seleniumをインストール。
 
pip3 install Selenium
 
確認
 
pip3 show selenium
 
Chromeインストール
 
rpm -qa | grep google-chrome
 
 
または
 
google-chrome –version
 
 
下記のサイトからgoogle-chromeをインストールした際のバージョンに合うChromeを選択する
 
 
chromedriverインストール
 
cd /tmp/
 
chromedriverをダウンロード
 
wget https://chromedriver.storage.googleapis.com/105.0.5195.52/chromedriver_linux64.zip
 
解凍
 
unzip chromedriver_linux64.zip
 
解凍したファイルを /user/bin配下に移動
※移動するだけでOK
 
sudo mv chromedriver /usr/bin/chromedriver
 
確認
 
chromedriver –version
 
 
と、ここまでで環境は整うのだが、今回は以下も必要だったので入れました。
 
pip3 install requests
 
pip3 install scp
 
pip3 install paramiko
 
で、ここで単純に「rootでいいだろう」とsudoとかしてインストールすると、「rootでインストールするのはおススメしないぜ。」的な警告が出ます。
 
まぁおススメしないだけで動くんだろ!と思いながらテストしていたんですが、
 

「DevToolsActivePort file doesn’t exist」

 
のエラーが。
 
調べてみるとoptionを付けろだとか、書いてあるんですが何をやっても改善せず。
 
なんだか人によって環境によって対応策が異なり、ある人はこれでOKだったがある人は何やってもダメみたいなカオスが繰り広げられてました。
解決した人もいれば、いない人もいるような感じ。
 
で、私も全く原因が分からず数時間。
 
ただ、なぜかもう一つ同じ環境を作って、そこで実行するとうまく動くのです。
 
ただ上記のインストールを同じようにしただけなのに!
 
で、いろいろやっていたんですが結果、上記pip3でインストールした3つのモジュール?をrootで入れてしまうとエラーになるようでした。
 
これ、uninstallして再度installしてもダメでした。
何か順番的な影響があったんでしょうか。
 
当然、ec2-userでインストールしてから自分のuserをaddしたりしてpip3でインストールしたのと他のユーザーで実行しても同様。
 
何か設定をchromeのdriverが持ってしまうのでしょうか。
なので、selenium+chromeでスクレイピングする時は、必ず最終的な実行ユーザーを作ってから、そこでpip3でのインストールを行うべしという教訓でした。
 
 
きっとこれも私だけの事象かも知れませんが、何かのお役に立てば&モアベターな解決策があれば教えてください。
 
 

コメントを残す

メールアドレスが公開されることはありません。