だれでもできる定常作業を削減して楽をしたいなぁ。
ネットのデータを効率よく取得して分析したいけど。。
無駄な作業をなくしたい!手作業では諦めていたデータ取得に挑戦したい!と考えている方へ
今回はブラウザ操作による業務効率化(RPA)をコード付きで解説していきます。
RPAで解消する課題
社内システムを利用した、毎日データダウンロード・実績確認作業
ECの各社商品情報の取得(せどり利用)
株価情報をレポートとして毎日自動取得
ブラウザ操作で汎用的に利用可能なコードとエッセンスをお伝えします!
この記事を書いた人
Pythonの実行環境の準備
Pythonの実行環境がある人は、ここは飛ばしてSeleniumのインストールに進んでください。
Pythonで有名な実行環境は、Google ColaboratoryとAnacondaです。
ビジネスで利用する場合、ネット上にデータのアップロードはできないと思うので、ローカル環境で動くAnacondaを使いましょう。
-
Anaconda Navigatorのインストールに関する究極のガイド
AnacondaでPython実行環境を準備したいからやり方教えてほしい 今回は、Pythonプログラムをビジネス目的で利用したい方向けにAnaconda Navigatorのインストール~プログラム ...
Seleniumのインストール
今回はseleniumというRPAのモジュールで、Google Chromeのブラウザ操作を自動化します。
Seleniumのインストール
- Python環境へseleniumのインストール
Anacondaを起動しJupyter Note Book上で、!pip install seleniumを実行。 - Chrome Driverのダウンロードと配置
URL:https://chromedriver.chromium.org/downloads
win32.zipをDLして、zipを解凍すると「chromedriver」が取得できます。
※ご利用のChromeのバージョンに合わせてDLください。
画面操作プログラムと同じフォルダに格納下さい。
ブラウザ操作のプログラムを動かしてみる
Googleを立ち上げて検索を自動実行する
さっそく以下のGoogle検索を自動でするコードをコピペし、実行をしてみてください!(^^
#!pip install selenium
from selenium import webdriver
from selenium.webdriver.chrome import service
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
driver = webdriver.Chrome()
driver.get('https://www.google.com')
element = driver.find_element(By.XPATH,'/html/body/div[1]/div[3]/form/div[1]/div[1]/div[1]/div/div[2]/input')
element.send_keys('検索したいテキスト')
element.send_keys(Keys.ENTER)
Googleのブラウザが立ち上がり、検索が実行されたら成功です!
チャレンジ
element.send_keys('検索したいテキスト')の検索したいテキストを変更しいろんな検索結果を確認してみましょう。
コード解説
今回のコードは、
- モジュール準備のコード(編集不可)
- ブラウザ操作を実装するコード(編集可)
の2つに分かれています。
モジュール準備
#!pip install selenium
from selenium import webdriver
from selenium.webdriver.chrome import service
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
driver = webdriver.Chrome()
モジュール準備のコードは最初に書かなければいけないものという認識で大丈夫です。
ブラウザ操作を実装
#立ち上げるページURLを指定
driver.get('https://www.google.com')
#ページの中の操作対象(XPATH)を変数に格納
#今回は検索ボックスをXPATHで指定
element = browser.find_element(By.XPATH,'/html/body/div[1]/div[3]/form/div[1]/div[1]/div[1]/div/div[2]/input')
#操作対象に対して、操作指示を記載
#検索ボックスに「検索したいテキスト」を入力
element.send_keys('検索したいテキスト')
#上記でテキスト入力後「Enter」を押下
element.send_keys(Keys.ENTER)
ブラウザ操作のコードは上記のコードの通り、
- 立ち上げるページURLを指定
- 操作対象の指定(XPATH)
- 対象に対しどんな操作をするか指示を書く
の3STEPを基本として構成されています。
いきなりでてきたXPATHってなんなん!?
という人もいるかと思いますが安心してください、「ただのブラウザ上の位置を示す絶対パスです」簡単に取得できますので説明します!
XPATHの取得方法
- Google Chromeで操作したいページを開く
- F12を押して、開発者画面を開く
- ブラウザ指定アイコンを押下し、操作したいパーツをクリック
- ハイライトされたhtmlを右クリックし「Copy⇒Copy full XPath」の順で押下
- コードに張り付ける
ここまでで、指定URLを立ち上げてページ内の操作対象を指定することができました。
残すは、対象に対してどんな操作をするかです。
ブラウザ操作では、3つの基本操作でほとんどRPAが完成します。
3つの基本操作
文字入力:element.send_keys("文字列")
クリック:element.click()
入力文字のクリア:element.clear()
上記の3つを駆使して、ブラウザ操作のRPAを作成してみて下さい。
チャレンジ
- ブラウザ操作の独自RPAを作成してみよう。
- 応用①:ブラウザのデータを取得し、print()で表示してみよう。
- 応用②:①で取得したデータをCSVに出力してみよう。
その他の操作コード
今回利用していないブラウザ操作が必要となるときは、Sleniumの公式辞書から外套の操作を調べてみて下さい。
具体的な実装方法まで詳しく掲載されているので、調べながら実装できればRPA中級者です!
Selenium公式ページ
XPATHを指定しても操作ができない場合
原因として、iframeで作られている画面を操作しようとしている可能性が非常に高いです。
iframeとは、画面上に別の画面(iframe)を埋め込む形で作られてるページです。
この場合、これからiframeを操作しますという宣言が必要になるので、対象個所を操作する場合は以下のコードを追加ください。
iframe対応コード
#iframeの操作に切替え
browser.switch_to.frame('maincontent')
#この間に、操作のコードを書きます。
#iframe操作終了
browser.switch_to.default_content()
iframeの対応までできれば、実現できないRPAはない上級者レベルに到達です!
まとめ
今回は「Pythonのブラウザ操作プログラム」について解説しました。
ブラウザ操作の8割は、今回の記事内の操作を応用することで実現可能です。
今日から自分の仕事で実践活用してみてくださいね(^^
当サイトは、データサイエンティストを目指しPythonプログラミングを活用していきたい!
という人に最短距離でPythonビジネスデータ分析スキルを伝授することを目的に記事を書いています。
データ分析にも興味がある人は、以下記事も読んでみてください。
それでは、また次の記事でお会いしましょう。
最近のコメント