本記事ついて
本記事は プログラミング初学者の私が学習していく中でわからない単語や概要をなるべくわかりやすい様にまとめたものです。
もし誤りなどありましたらコメントにてお知らせいただけるとありがたいです。
HTMLから正規表現でデータを抽出する
HTMLドキュメント全体の文字列から必要なデータのみを取り出すと言う作業が必要となる。
具体的には、StringオブジェクトのmatchメソッドでHTMLドキュメントから該当の要素を取得し、同じくreplaceメソッドでHTMLタグを取り除くという手順になる。
function tosiki() {
const url = 'https://tonari-it.com/scraping-test/';
const response = UrlFetchApp.fetch(url);
const html = response.getContentText();
const title = html.match(/<title>.*?<\/title>/i)[0];
console.log(removeTag_(title));
const entries = html.match(/<h2>.*?<\/h2>/gi);
for (const entry of entries) console.log(removeTag_(entry));
}
function removeTag_(str) {
return str.replace(/<\/?[^>]+/gi, '');
}
APIを使ってJSONデータを取得する
APIとは
ソフトウェアの機能やデータを、外部のプログラムから呼び出して利用する仕組みのこと
REST APIとは
APIの形式の1つで、特定のURLに対してHTTPリクエストを送ることで、外部から操作sることが出来る
例として郵便局のAPI
http://zipcloud.ibsnet.co.jp/doc/api
このAPIは以下の定められたリクエストURLを送信することで、JSON形式でレスポンスを受け取ることができる。
https://zipcloud.ibsnet.co.jp/api/search?zipcode={izipcode}
{izipcode}には、7桁の郵便番号を配分なしで指定
このURLをリクエストすることにより、指定した郵便番号に対する住所データをJSON形式で取得できる。
function tosiki() {
const zipcode = '7830060';
const url = 'https://zipcloud.ibsnet.co.jp/api/search?zipcode=' + zipcode;
const response = UrlFetchApp.fetch(url);
const obj = JSON.parse(response.getContentText());
console.log(`ステータスコード: ${obj.status}`);
const result = obj.results[0];
const {address1, address2, address3} = result;
console.log(`都道府県名: ${address1}`);
console.log(`市区町村名: ${address2}`);
console.log(`町域名: ${address3}`);
}