普段の業務に少しでも活かせればと思い、以前から興味のあったWebスクレイピングを勉強してみることにしました。
きっかけ
普段の業務でAmazon上での相乗り問題が発覚し、それを解消するために弊社の商品を1つ1つ確認する(商品ページにアクセスして相乗りされていないか確認して、相乗りされていた場合は相乗りしている企業をピックアップする)という作業が必要になりました。
一旦ピックアップの方は完了し、今後は相乗りされないよう取引先にはOEM以外のネット販売を禁止する方針になりましたが、それでも完全ではないし、無断で行う企業もあれば、今回のピックアップも漏れがあるのでは?と思い、相乗り企業を自動で探すようなものができればなと思いました。
Web上の情報を自動で収集してくれるWebスクレイピングの存在は知っていて興味はありましたが、普段の業務にあまり活用する場がなかったという理由から全く触れていませんでしたが、今回Webスクレイピングを活用すれば必要なデータが簡単に取得できるのではないかなと思い、勉強を始めて見ることにしました。※どちらかというと目標達成が目的ではなく、勉強が目的になります。
Amazonの相乗りって何?っていう方向けの記事
Amazonは注意が必要?
AmazonでのWebスクレイピングの方法を調べるにあたり、「AzamonはWebスクレイピングを禁止している」という、何やら雲行きが怪しい情報が。
更に調べを進めると、SeleniumというWebブラウザの操作を自動化するためのフレームワークを使用すれば問題なくできるとう情報もありましたのでとりあえず、Python + Seleniumで進めてみることにしました。
※Amazon以外にも言えることですが、Webスクレイピングで最も大切なことは、サイトにアクセスする頻度です。アクセスを集中させてサーバーに負荷を掛けないように注意しましょう。
Seleniumを快適に利用するために
まず初めにPythonが必要です。既にインストールされていたので、ここでは割愛いたします。
Seleniumのインストール
pip install selenium
ネックとなるChromeDriverのバージョン管理
スクリプトを書いて、それを試しに走らせればできるのかなと思いましたが、どうやら「ChoremeDriver」というものが必要なようでした。UbuntuにChoromeDriverをインストールする方法が書いてありそれを試したのですが、うまく行かず。。どうやらGoogleChromeのバージョンとChoromeDriverのバージョンが合わないのでうまく行かないと分かりました。
調べてみると、両者のバージョンを確認して自動でChromeDriverのバージョンをGoogleChromeのバージョンに合わせてくれるものがあることで試してみることにしました。
参考にしたサイトはこちら
以下のスクリプトを書けばとりあえず、ブラウザが立ち上がるようになりました。
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
driver = webdriver.Chrome(ChromeDriverManager().install())
driver.get(‘https://google.com’)
ですがこれでは、一瞬立ち上がったのが確認できるくらいで本当に立ち上がったのか不安ですね。そこで必要になるのが上述でも触れた、サイトへのアクセスの頻度を調節するモジュールです。
アクセス過多を防ぐための措置
timeモジュールを利用します。以下のコードを挿入します。場所はimport文のまとまりの中であればどこでも良いです。
import time
これでtimeモジュールを利用できます。driver.get(‘https://google.com’)の下の行に、以下のコードを追加します。
#1秒間ストップ
time.sleep(1)
time.sleep()を利用することでブラウザ処理を一時的にストップすることができます。()内の数値が実際に停止できる時間です。あとは、各処理の間にtime.sleep()を挟み込むことでサイトへのアクセス過多を防ぐことができると思います。
まとめ
とりあえず今回はここまでにします。ブラウザ立ち上げ後、目的の要素を指定したり、文字を打ち込んだりを確認することはできましたが、まだまだ必要なレベルには達していません。普段の業務で手一杯ですが、こちらの勉強も進めていければなと思います。