どうも、黒井(@Kuroi_engineer)です。
前回の記事ではPower Automate for desktop(以下PA4d)を使用してWebページからデータを取得する(以下スクレイピング)ための準備について紹介させていただきました。
今回は、前回の続きとしてPA4dを使用して実際にスクレイピングを行う手順について紹介したいと思います。
もしまだ準備を行ってないよ、といった方がいれば、まず準備編を行った後に本記事の実践編をお試しいただければと思います。
始める前の注意
Webページからデータを取得する前には必ずページの利用規約を確認しましょう。
WebページによってはRPAやプログラミングによるデータの取得が認められていない場合があります。
その場合、規約違反となるだけでなく場合によっては法的措置を取られる可能性があるので、問題ないことを確認してから行いましょう。
ツールによるデータの取得を禁止しているWebページの例
- Amazon
- Indeed
- Yahoo!ファイナンス(ファイナンス系は禁止されている所が多いです)
※以下はAmazonの規約から抜粋
使用するアクション
スクレイピングを行うにあたり使用するアクションは、基本的に「ブラウザー自動化」グループのアクション群になります。
どのアクションも使用しますが、特に以下のアクションは使用するので覚えておくと良いでしょう。
・「新しい ○○ を起動する」 のブラウザー起動アクション
・「リンク、ボタンをクリックする」の操作アクション
・「詳細を取得します、データを抽出します」のデータ取得アクション
では早速実践を行っていきましょう。
Webページからデータを取得する手順
ではここからは実際にWebページからデータを取得する手順について説明していきます。
今回はセブンイレブンの公式ページから、今週の新商品の「北海道」のページから「名前」と「金額」、「商品ページへのURL」を取得してみたいと思います。
/
Webページからデータを取得するフローを作成する手順として、レコーダーを使用して作成する方法と、アクションを選択して作成する方法があります。
レコーダーを使用すると、自動的に最適なアクションを選択して作成してくれるので、まずはレコーダーで作成してみる所から始めると良いでしょう。
レコーダーを使用して作成する
まずレコーダーの使い方について簡単に説明します。
PA4dを起動後、「+新しいフロー」をクリックし、フローの作成画面に移動します。
移動後、タブ内の「レコーダー」をクリックすることでレコーダーが起動します。
後は「記録」をクリックすることで、自動的にそこから行う操作が記録されていきます。
記録を一時停止したい場合は「一時停止」をクリックしましょう。
記録し終わったら「終了」ボタンをクリックすることで、フローに記録したアクションが追加されます。
レコーダーの使い方を確認したら、以下の手順でWebページからデータを取得してみましょう。
- ブラウザーでセブンイレブンのページを開くまずはブラウザーを起動し、セブンイレブンの今週の新商品 のページを開きます。
/ - 準備編で説明しておりますが、ブラウザーはMicrosoft Edge 、 Google Chrome、Mozilla Firefox、Internet Explorer 以外は使用できない点ご注意ください。
- レコーダーを起動
冒頭で紹介した手順でレコーダーを起動し、記録をクリックします。 - Webページに赤い枠が出ることを確認し、「北海道」をクリック
「記録」をクリックすると、Webページ上に赤い枠が出てきます。この赤い枠が出ることを確認したら、「北海道」のリンクをクリックしましょう。
すると、レコーダーに「Webブラウザーの起動」アクションと、「Webページの要素をクリック」アクションが追加されます。
もし不要なアクションが追加されてしまった場合は、ごみ箱のマークをクリックすることで削除できます。赤い枠が出ない場合は一度レコーダーを閉じ、再度起動しなおしてみましょう。また、拡張機能(準備編を参照)がインストールされているか確認してみましょう。
もし、Microsoft Edgeを使用しており、Web ページの要素として取得されない場合は、Microsoft EdgeがIEモードとなっていないか確認してみましょう。
- 100件 のボタンをクリック
100件のボタンをクリックします。 - 商品のリンク上で右クリックしメニューを表示
- 商品名を取得
メニューを表示したら、「要素の値を抽出」のカーソルを合わせ、「テキスト」をクリックします。取得すると、取得した箇所が緑色の破線で囲われます。
ここまででレコーダーで記録したアクションは次のような状態になっているかと思います。
- ページ全体の商品名を取得する
⑥の操作で商品名を取得できましたが、このままでは選択した1つの商品名しか取得できていません。
隣の商品名に対しても⑥と同じ操作にて、商品名の取得を行いましょう。すると、そのページの同じ項目すべてが一括で取得されます。
取得された箇所はすべて緑色の破線で囲われるので確認してみましょう。 - 商品の「金額」を取得する
ここからは商品名と同じ手順で「金額」と「商品ページへのURL」を取得していきましょう。
金額が表示されているテキストを右クリックし、要素の値を抽出 > テキストを選択します。選択後は商品名と同じく、金額が緑色の破線で囲われます。
なお、⑦のページ全体の「商品名」を一括で取得する操作を行っている場合、金額を1つ取得すると、自動的にページ全体分取得してくれます。 - 「商品ページのURL」を取得する
続いて「商品ページのURL」を取得しましょう。
⑥の操作と同じく、商品名を右クリックし、要素の値を抽出 > Href を選択しましょう。これでこのページからデータを取得する操作は完了です。
一度、レコーダーを一時停止しましょう。 - 次のページのデータを取得する設定を行う
Webページからデータを取得する操作を作成しましたが、ページによっては次のページが存在する場合がありますよね。
そんな時は「ページャー」の設定を行っておきましょう。「ページャー」とは、ページのデータを取得し終わった後、もしその要素がページに存在している場合は、自動的に要素を操作してくれる機能です。
今回のページでは、次のページが存在する場合「次へ」の要素がページ内に表示されているので、「次へ」を「ページャー」としておくことで自動的に次のページへ移動しデータを取得してくれます。では実際にページャーの設定をしていきましょう。
レコーダーの一時停止を解除し、「次へ」を右クリック > 「この要素をページャーとして設定」をクリックします。「ページャー」として設定されると、要素が青色の破線で囲われます。
- 記録した内容を確認して終了
ここまで正しく操作が行えている場合は、以下のようにアクションが記録されているかと思います。
一時停止をし忘れた等の理由で、もし余計なアクションが入ってしまっている場合は「ごみ箱」マークをクリックして不要なアクションを削除し、終了をクリックしましょう。すると、以下のようにフローが作成されます。
- 新しい Chromeを起動する アクションを修正
レコーダーで追加した「新しい Chromeを起動する」アクションは、"起動モード"が「実行中のインスタンスに接続する」設定となっています。
これは、ブラウザーで開かれたページに接続する設定のため、事前に対象のページをブラウザーで開いていないとエラーとなってしまいます。
そのため、新しくブラウザーを起動して操作を行う設定に変更する必要があります。「新しい Chromeを起動する」アクションを開き、"起動モード"を「新しいインスタンスを起動する」に変更し、先ほどのURLを"初期URL"に設定しましょう。
また、"ウィンドウの状態"を「最大化」とすることでブラウザーの操作が見やすくなります。 - 作成したフローを実行
では、実際にフローを実行してみましょう。
フロー作成画面の「実行」ボタンをクリックします。すると、自動的にブラウザーが立ち上がり、データの取得が行われるかと思います。
取得したデータは「%OutputData%」変数内に格納されているので、下記手順で確認してみましょう。これでデータの取得は完了です!
データが取得出来たら、「Excel」グループのアクションなどを使用してExcelに値を転記する、アプリケーションや別のWebページにて値を使用する、等といった使い方ができます。ぜひお試しいただければと思います!
まとめ
今回は、実際にWebページからデータを取得する(スクレイピング)方法についてまとめてみました。
Webページからデータを取得するのは、手動で行うと非常に手間がかかる作業ですが、PA4dを用いることでかなり楽に、かつ早く取得できるので是非活用してみてはいかがでしょうか。
今回はレコーダーを用いた方法を中心にまとめていますが、アクションから作成する方法についても本記事を更新してまとめてみたいと思いますので、そちらも楽しみにしていただければ幸いです。
※本記事内にも記載しておりますが、規約によりページからデータを取得する行為を禁止している場合があります。本記事の操作を行う際は必ず対象とするサイトの利用規約を確認してから行ってください。