Google Apps ScriptでGoogle検索結果をスクレイピングし検索結果を取得する

Google Apps ScriptでGoogle検索結果をスクレイピングし検索結果を取得してみます。

■GoogleAppsScriptを作成

まずは、GoogleアカウントでGoogleドライブ(https://drive.google.com/drive/u/0/my-drive)にアクセスします。

アクセスし、左側のメニューから「新規」ボタンをクリックします。

クリックするとプルダウンメニューが表示されますので、メニューの中から「その他」をクリックします。クリックすると、さらにプルダウンメニューが表示されますので、メニューの中から「Google Apps Script」をクリックします。

クリックすると、Apps Scriptのプロジェクトの作成画面が表示されます。こちらの画面で、Web サイトをスクレイピングするスクリプトを作成していきます。

■Google検索結果をスクレイピングし検索結果を取得する

作成後、Google検索結果をスクレイピングし検索結果を取得するスクリプトを書いていきます。

■コード

function scrapeGoogle() {
  var searchResults=UrlFetchApp.fetch("https://www.google.co.jp/search?q="+encodeURIComponent("日本"));
  Logger.log(searchResults)
}

UrlFetchApp.fetch()を使用し、日本のGoogle検索から「日本」という検索結果の情報を取得してみます。

■実行

Exception: Request failed for https://www.google.co.jp returned code 429. Truncated server response: <!DOCTYPE html PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN”> <html> <head><meta http-equiv=”content-type” content=”text/html; charset=utf-8″><me… (use muteHttpExceptions option to examine full response)

実行してみると、エラーが出力されました。エラーの内容を確認してみると、「https://www.google.co.jp のリクエストが失敗し、コード 429 が返されました。」というものです。

エラーを出力後、様々な方法でリクエストを試みましたが、いずれもリクエストは失敗。

原因を調べてみると、Google検索はUrlFetchからのリクエストを自動化されたトラフィックと判断し、ブロックされていることが判明しました(https://stackoverflow.com/questions/66429810/error-429-on-scraping-from-google-search-with-google-apps-script)。

検索結果を取得する場合は、Custom Search JSON/Atom API(https://developers.google.com/custom-search/v1/overview)を使用した方が良い。

※RESTを使用してCustom Search JSON/Atom APIを呼び出す方法(https://developers.google.com/custom-search/v1/using_rest

コメント

タイトルとURLをコピーしました