Google検索結果をWebスクレイピングする方法。
林竜佑です。
Googleの検索結果の順位を自動でスプレッドシートに書き出せたらなー
って考えることはあると思います。
結論で言うとGoogleが禁止しているためWebスクレイピングは出来ないのですが、
Google Custom Search APIというサービスを利用することでWebスクレイピング可能です。
ただし、Google検索を手動で行った結果とは若干異なることがあります。
結果が異なる理由はイマイチわからないですが、
参考にはなるので利用してみてはいかがでしょうか。
それでは早速以下にスプレッドシートに検索結果を自動で書き出すGASを記載します。
function fetchGoogleSearchResults() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var keywords = sheet.getRange("A1:E1").getValues()[0]; // A1〜E1セルからキーワードを取得
// Google Custom Search APIのエンドポイント
var apiUrl = "https://www.googleapis.com/customsearch/v1";
// Google Custom Search APIのキー
var apiKey = "あなたのAPIキー"; // 提供されたAPIキーを使用
// Google Custom Search EngineのID
var cx = "あなたの検索エンジンID"; // 変更された検索エンジンIDを使用
// 検索結果の取得数
var numResults = 10;
// 各キーワードについて検索結果を取得
for (var col = 0; col < keywords.length; col++) {
var keyword = keywords[col];
if (!keyword) {
Logger.log("No keyword provided in column " + (col + 1));
continue;
}
// グループごとに検索結果を取得
for (var startIndex = 1; startIndex <= 50; startIndex += 10) {
// APIリクエストのURLを構築
var requestUrl = apiUrl + "?key=" + apiKey + "&cx=" + cx + "&q=" + encodeURIComponent(keyword) + "&num=" + numResults + "&start=" + startIndex;
// リクエストURLをログに出力
Logger.log("Request URL: " + requestUrl);
// APIリクエストを送信
var response = UrlFetchApp.fetch(requestUrl);
var data = JSON.parse(response.getContentText());
// 検索結果をスプレッドシートに記録
var results = [];
if (data.items) {
for (var i = 0; i < data.items.length; i++) {
var item = data.items[i];
var title = item.title;
var url = item.link;
var linkedTitle = '=HYPERLINK("' + url + '","' + title + '")'; // タイトルにURLのリンクを埋め込む
results.push([linkedTitle]);
}
} else {
Logger.log("No items found in response");
}
// タイトルとURLを2行目以降に記録
if (results.length > 0) {
sheet.getRange(startIndex + 1, col + 1, results.length, 1).setFormulas(results);
}
}
}
}
これでやっていることはスプレッドシートの
A1〜E1セルにそれぞれ検索結果を知りたいワードを記載し、A2〜E2以降に検索結果50位までを記載するようにしています。
検索結果はタイトルにURLをリンクさせています。
また、50位まで一気に取得しようとするとエラーが多発するので、10位ずつ取得するようにしています。
「あなたのAPIキー」「あなたの検索エンジンID」は
各自のユニークなモノとなっているためご自身で入力してください。
なお、Google Custom Search API、Google Custom Search Engineは
Google Cloud Platform上で利用可能なため、これらを利用できるようにしてください。
方法は調べたら色々出てくるので、検索してみてください。
この記事が気に入ったらサポートをしてみませんか?