Robotic Crowd

Robotic Crowd

検索結果のスクレイピング

Author: Asao Nakamura 452 views

この記事では、WEBページから情報を取得する方法を説明します。

【できるようになること】

  • ScrapePageアクションを利用
  • スクレイピング結果をシートに書き込む

 要件の確認

ワークフローを構築する前に今回作成するフローの要件を確認しましょう。

Googleで特定のキーワードを検索。

検索結果のタイトルとURLをスプレッドシートにリスト化する。

Google検索/空のスプレッドシート

この記事で紹介するワークフローでは以下の作業内容を設定します。

  • Google検索を開く
  • 検索ワードを入力する
  • 検索を実行する
  • 検索結果からタイトルとリンク先URLをスクレイピングする
  • スクレイピング結果をスプレッドシートに書き込む

 ワークフローの設定例

下記手順にてワークフローを設定します。

  • OpenBrowserアクションを設定します。
  • URLパラメータに「https://www.google.com/?hl=ja」を入力します。
  • TypeTextアクションを設定します。
  • CSSセレクタにはinput[name="q"]、文字列には「福岡市 観光」を入力します。

ここまで設定したら、検索バーに文字入力できているか実行して確認してみましょう。

 
 

検索バーに「福岡市 観光」と正しく入力されていることを確認したら、次にEnterキーを押して検索の実行を行う設定をします。

  • SendKeysアクションを設定します。
  • CSSセレクタにbody、キーには["Enter"]を入力します。
  • ブラウザにはTypeTextのアウトプットが設定されていることを確認します。
    ※空欄の場合にはTypeTextのアウトプットを引継ぐ設定をします。

ここまで設定したら、再度実行して検索結果のページが表示されているか確認してみましょう。「福岡市 観光」の検索結果ページが表示されていれば実行の成功です。

 

実際のブラウザでスクレイピング箇所を確認します。

今回取得するのは、以下画像の赤枠の部分です
ScrapePageアクションでは、赤枠部分をまとめて一気に取得することが可能です。

スクレイピング箇所の確認ができたら、実際にスクレイピングアクションを設定します。

  • ScrapePageアクションを設定します。
  • CSSセレクタに以下を入力します。
    .yuRUbf > a
  • ブラウザには、SendKeysのアウトプットが設定されていることを確認します。
    ※空欄の場合にはSendKeysのアウトプットを引継ぐ設定をします。
 

ScrapePageアクションを設定したら、ワークフローを実行してみましょう。
実行結果を見ると、以下のようなコードが並んでいます。
  • innerText:取得した要素のテキスト
  • href:取得した要素が持っているリンク先URL

今回はスクレイピングの実行結果の中から「innerText」と「href」の2つの項目をスプレッドシートに書き込んでいきます。

スクレイピング結果を書き込むためのスプレッドシートを準備します。

  • GetSperadsheetアクションを設定します。
  • プロバイダIDを選択します。
  • 書き込むスプレッドシートを選択します。

参考:CSVをGoogle Spreadsheetに転記する

ScrapePageの実行結果はリスト形式になっているので、ForEachの繰り返しを利用して、各要素をスプレッドシートに書き込みを行います。

  • ForEachの繰り返しを設定します。
  • 「繰り返すリスト」には、ScrapePageのアウトプットを紐つけます。
  • 「要素を格納する変数名」には、「data」と入力します。
 

スプレッドシートへの書き込みには、AppendValuesアクションを利用します。

  • AppendValuesアクションをForEachの中に設定します。
  • Spreadsheetの項目には、GetSpreadsheetのアウトプットを紐つけます。
  • 範囲には、任意のシート名を入力します。
  • 値には、 ["${data.innerText}","${data.href}"]を入力します。

これでワークフロー設定は以上になります。お疲れ様でした!!

最後にワークフローを実行して、1.で確認したイメージ通りの結果になっているか確認してみましょう。

※ページ上部の「完成イメージ」もご参照ください。

# ブラウザを開く
+open_browser_1:
  action>: OpenBrowser
  url: 'https://www.google.com/?hl=ja'
  lang: 'ja-JP'
  timeZone: 'Asia/Tokyo'
  headless: true

# 文字入力
+type_text_1:
  action>: TypeText
  browser: +open_browser_1
  selector: 'input[name="q"]'
  text: '福岡市 観光'
  clearValue: false
  ignoreError: true

# キーを送信_Enterキーを叩く
+send_keys_1:
  action>: SendKeys
  browser: +type_text_1
  selector: body
  keys: ["Enter"]
  waitAfter: 3000
  ignoreError: true

# スクレイピング  
+scrape_page_1:
  action>: ScrapePage
  browser: +send_keys_1
  selector: '.yuRUbf > a'
  text_only: false
  ignoreError: true

# 既存のスプレッドシートを取得
+get_spreadsheet_1:
  action>: GetSpreadsheet
  provider: ''
  spreadsheet_id: ''
  meta:
    display:

# 各要素について繰り返す
+for_each_1:
  for_each>:
    data: +scrape_page_1
  _do:

    # 末尾に値を追加_タイトルとURLをシートに書き込む
    +append_values_1:
      action>: AppendValues
      spreadsheet: +get_spreadsheet_1
      range: 'シート名!A:A'
      values: ["${data.innerText}","${data.href}"]

 ワークフロー作成で使ったアクションまとめ

ワークフローで使用したアクションを復習しましょう。

<ScrapePage>スクレイピング

このページは役に立ちましたか?