勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ。

GASで特定サイトをスクレイピングし、画像をGoogleドライブに保存

  Google Apps Script Google

Google Apps Scriptで特定のサイトにスクレイピングし、画像が掲載されている場合はその画像を取得し、Googleドライブに保存したい。一先ずは本ブログをスクレイピングしてアイキャッチ画像を保存する方法をメモ。

 

ライブラリの追加

スクリプトエディタページの左側にある「ライブラリ」をクリックするとダイアログが表示されるので、「1Mc8BthYthXx6CoIz90-JiSzSafVnT6U3t0z_W3hLTAX5ek4w0G_EIrNw」にて検索し、Parserライブラリを追加する。

 

スクリプトの作成

function getImage(){

	//URL指定
	const url = 'https://taitan916.info/blog/';

	//HTMLデータ取得する
	const html = UrlFetchApp.fetch(url).getContentText('UTF-8');

	//パース用オブジェクト
	const parseData = new Object();

	//画像のURLを抽出
	parseData['image'] = Parser.data(html).from('<img width="150" height="150" src="').to('" class="attachment-thumb150').iterate();

	for( let i in parseData['image'] ){

		//画像を取得
		const res = UrlFetchApp.fetch(parseData['image'][i]);
		const image = res.getBlob();

		//保存先のフォルダ指定
		const folder = DriveApp.getFolderById('xxxxxxxx');

		//画像を保存
		folder.createFile(image);
	}

}

getBlob

ファイル操作を行う場合はBlobオブジェクトを介すると便利らしい。以下が参考になった。

https://qiita.com/a_eau_/items/01bc14bfc5cb5ef12e64

 

所感

特定の文字列や画像をスクレイピングすることは可能となったので、今後はログインが必要なサイトに対してのスクレイピングを勉強したい。これはPHPでも自身で対応したことが無い(別担当者が作ったシステムを触ることはあった)ので、GAS・PHPどちらも対応できるようにしたいところ。

 

参考サイト

Google Apps Scriptで画像をダウンロードしてGoogle Driveに保存する方法

 - Google Apps Script Google

  関連記事

GASとGoogleカレンダを連携し暦通りではない店休日を取得する方法

小売店等のサイトで営業日カレンダーみたいなものを表示させる際に今まではPHPで管 ...

GASとAdSense Management APIを使って前日分の売り上げをメール通知する方法

Googleアドセンスの売り上げをチェックする際、いつもはアドセンスの管理画面に ...

GASで「カクヨム」の更新状況をスクレイピングで取得する

Google Apps Scriptの勉強として「カクヨム」の指定した小説が更新 ...

GASを使ってみて感じたメリットとデメリット

Google Apps Scriptを色々勉強した中で感じたメリットとデメリット ...

GASを使って任天堂ホームページ更新情報のRSSを取得する方法

GASを使ってRSSを取得してみたい。今回はニンテンドーホームページ更新情報とい ...