ふきげん猫ちび
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] : '';
}
まとめ
以上になります。
ヘイショー
ご精読ありがとうございました。