ブログの更新通知をメールで受け取る

Google App Script(GAS)でWebサイト情報をスクレイピングするテンプレ

ふきげん猫ちび

Google App Scriptを使ってスクレイピングをしてみたい。
メタタイトルとメタディスクリプションを一括で抽出したい。

ふきげん猫ちび

ふきげん猫ちび

コードを書くのは無理だから、テンプレをコピペして活用したい。

このような方のために、今回はGoogle App Script(GAS)でWebサイトのテキストをスクレイピングするためのコードを公開します。

この記事の内容
  • 用意するもの
  • メタタイトルとメタディスクリプションを抽出
  • H1タグを抽出

ヘイショー

それでは行ってみましょう!

用意するもの

まずはこんな感じで、Googleスプレッドシートに1列目に抽出したい項目を、A列にURLを羅列してください。

シート名は「Scraping」と命名ください。

Google App Scriptのコードの走らせ方は以下の記事を参照ください。

参考 GAS(Google App Script)のスクリプトを走らせる(ディプロイ)する方法

メタタイトルとメタディスクリプション

 

HTML



function myFunction() {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadsheet.getSheetByName("Scraping");
var values = sheet.getDataRange().getValues();

try {
for (var i = 1; i < values.length; i++) {
checkTitleDescription(sheet, values[i], i);
}
} catch (e) {
Browser.msgBox(e);
}
}

function checkTitleDescription(sheet, value, i) {
var response = UrlFetchApp.fetch(value[0]);
var text = response.getContentText();
var titleMatch = text.match(/<title>([\s\S]*)<\/title>/i);
var title = getFirstValue(titleMatch);
var descMatch = text.match(/meta\s+name=['"]description['"]\s+content=['"](.+)['"]/i);
var description = getFirstValue(descMatch);
sheet.getRange(i + 1, 2, 1, 2).setValues([[title, description]]);
}

function getFirstValue(values) {
return values && values.length > 1 ? values[1] : '';
}


 

ヘイショー

コピペするだけでOKです。

メタタイトル/ディスクリプション+H1タグも一緒に抽出する

 

HTML



function myFunction() {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadsheet.getSheetByName("Scraping");
var values = sheet.getDataRange().getValues();

try {
for (var i = 1; i < values.length; i++) {
checkTitleDescription(sheet, values[i], i);
}
} catch (e) {
Browser.msgBox(e);
}
}

function checkTitleDescription(sheet, value, i) {
var response = UrlFetchApp.fetch(value[0]);
var text = response.getContentText();
var titleMatch = text.match(/<title>([\s\S]*)<\/title>/i);
var title = getFirstValue(titleMatch);
var descMatch = text.match(/meta\s+name=['"]description['"]\s+content=['"](.+)['"]/i);
var description = getFirstValue(descMatch);
var h1Match = text.match(/<h1.+?>([\s\S]*)<\/h1>/i);
var h1 = getFirstValue(h1Match);
sheet.getRange(i + 1, 2, 1, 3).setValues([[title, description, h1]]);
}

function getFirstValue(values) {
return values && values.length > 1 ? values[1] : '';
}


まとめ

以上になります。

ヘイショー

ご精読ありがとうございました。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です