Python初心者ネコ「プログラミングを上達するのに最も良いのは動くプログラムを書いてみると聞いたニャ。Webサイトの情報収集を代わりにやってくれるプログラム(ロボット)を作れないかにゃ?」
プログラミングを上達する最大のコツは、実際に「役に立つ」プログラムを書き、楽しみながら学ぶ事です。今日は、PythonでWebサイトの情報を自動で取得するプログラムを書いてみましょう。
Webサイトの情報を自動で取得する
あなたは、毎日「情報収集」に利用しているWebサイトってありますか?
例えばWebサイトの情報を自動で取得し、CSVやエクセルのデータとしてまとめられたら便利ですよね。 これは、Webスクレイピングと呼ばれる技術を使う事で可能です。
Webサイトの情報を収集する作業自体は、単純作業です。ですので、収集作業を自動化し、データの分析やアクションに集中する事で圧倒的に生産性を上げる事が可能です。
価格チェックや自動ログインが可能
例えば、あなたがモノを仕入れて販売している場合、ライバルの価格が気になると思います。こういった作業を自動化する事で、いちいちアクセスして目的の情報を探し、手動で記録する手間を省けます
もちろん、Webサイトを定期的に訪れて更新を自動チェックすることも出来ますし、Webサイトに自動でログインしたりする事も出来ます。
Webスクレイピングをする上での注意点
一見良い事尽くめのWebスクレイピングですが、もちろん注意点もあります。
例えば、大量のデータを処理する為に過度なアクセスをすると、相手サーバーに負担をかけます。ですので、こういった事を嫌い、Webサイトによっては禁止している所もあリマス。ですので、対象のWebサイトの規約を確認する様にして下さい。
事前準備
それでは、実際にプログラムを実行する前に準備をしていきます。まだ、Pythonをインストールしていない人は、Pythonを導入して下さい。
- Seleniumをインストール
- Webドライバー(Chrome)をインストール
Seleniumとは?
Seleniumは、Webブラウザを使用してWebアプリケーションをテストするツールです。この「Webブラウザを使って」というのがポイントで、人が手でWebブラウザを操作する代わりにSeleniumがWebブラウザを操作してくれます。
インストールはAnacondaのインストール画面で行っても良いですし、コマンドラインで以下を実行する事でも出来ます。
pip install selenium
Webドライバの導入
Webドライバの導入ではGoogle Chromeを導入しましょう。Macの場合は、以下のコマンドを実行する事で簡単に導入できます。
brew install chromedriver
とする事で。Windowsの方はこちらからダウンロードして設定します。
Amazonにアクセスして検索
それでは、Amazonにアクセスして検索を行ってみましょう。プログラムは以下の通りです。
from selenium import webdriver #Chromeを起動 browser = webdriver.Chrome() #amazonを開く browser.get("https://www.amazon.co.jp/") #検索したいキーワードを入力 elem = browser.find_element_by_id("twotabsearchtextbox") elem.send_keys("検索したいキーワード") #検索の実行 elem_btn = browser.find_element_by_class_name("nav-input") elem_btn.click()
上ではAmazonを開いていますが、アドレスを変更する事でアクセスするWebサイトを変える事が出来ます。
Amazonでの検索キーワードの設定
#検索したいキーワードを入力 elem = browser.find_element_by_id("twotabsearchtextbox") elem.send_keys("手帳術")
上の例では「手帳術」というキーワードで検索していますが、このキーワードを変える事で検索用語を変更する事が出来ます。
ポイントは、「find_element_by_id」という所です。
これはCSSセレクターと呼ばれるもので、IDが「#twotabsearchtextbox」という要素を探し、その要素を選択しています。
その要素に対し、「send_keys」で検索キーワードを送っています。
更に学びたい方へ
プログラムの肝は、「どの要素」に対して「どの様な操作」をするかです。今回の例ではIDで要素を選択しましたが、clsssやリンクタグ等で選択する事も出来ます。
そもそもIDやclassが何か分からない方は、HTMLを勉強してみて下さい。
Progateの初級編をやり、そこから対象となるWebサイトの要素の調べ方(開発ツールの使い方)や操作方法を学ぶ事で十分です。
スクレイピングについてもっと詳しく学びたい方は
スクレイピングについてもっと詳しく学びたい方は、PythonによるWebスクレイピング〜入門編〜【業務効率化への第一歩】がオススメです。
このコースでは、Seleniumを使用してランキング形式のサイトから情報をまとめて収集したり、自動ログインする事が可能です。
Webスクレイピングは難しそうに見えて、実は押さえておく基本はそこまで多くないです。
3時間ほどの講座と短いですが、これを見て、実際に手を動かしてみるだけで、簡単にマスター出来ると思います。