GoogleスプレッドシートのIMPORTXMLという関数で、簡単にスクレイピング出来る。
けど、テスト環境などはBASIC認証をかけている場合が多く、その状態でも確認したい場合は、IMPORTXMLだけでは無理っぽい。
Google Apps Scriptを使用したら、出来るらしい。 blog.halt.project-p.jp
手順
1.Google Apps Scriptを書く。
/* * メタ情報を取得する * path - ドメイン以下のURLパス * type - titleなど何を取得するか */ function getMeta(path, type) { // 現在表示しているスプレッドシートを取得 var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); var sheet = spreadsheet.getActiveSheet(); // ドメインとBASIC認証のID、PWは、スプレッドシートのC4、C5、C6に記載した。 var domain = sheet.getRange("C4").getValue(); var user = sheet.getRange("C5").getValue(); var pass = sheet.getRange("C6").getValue(); // BASIC認証対応 var options = { "headers" : {"Authorization" : " Basic " + Utilities.base64Encode(user + ":" + pass)} }; var response = UrlFetchApp.fetch(domain + path, options); var content = response.getContentText("UTF-8"); var text = ""; if ( type.match(/title/) ) { // titleタグ取得 var titleMatch = content.match(/<title>([\s\S]*)<\/title>/i); var title = getFirstValue(titleMatch); text = title; } else if ( type.match(/description/) ) { // description取得 var descMatch = content.match(/meta\s+name=['"]description['"]\s+content=['"](.+)['"]/i); var description = getFirstValue(descMatch); text = description; } else if ( type.match(/keywords/) ) { // keywords取得 var keywordsMatch = content.match(/meta\s+name=['"]keywords['"]\s+content=['"](.+)['"]/i); var keywords = getFirstValue(keywordsMatch); text = keywords; } // Logger.log(text); // エディタ上でcommand + Enterで、logが見れる return text; } // マッチする最初の要素を返す function getFirstValue(values) { return values && values.length > 1 ? values[1] : ''; }
2.スプレッドシートからGoogle Apps Scriptを呼び出す
- スクレイピングした文字列を反映したいセルに、1で書いたGoogle Apps ScriptのgetMeta関数を記入する(第1引数がドメイン以下のURLパス、第2がtitleなど何を取得するか)
=getMeta($C10, "title")