勉強したことのメモ.

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を使ってみて感じたメリットとデメリット
GASを使ってみて感じたメリットとデメリット

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

GoogleスプレッドシートとPHPを連携させデータを取得・追記する方法
GoogleスプレッドシートとPHPを連携させデータを取得・追記する方法

GoogleスプレッドシートとPHPプログラムを連携させたいという案件をたまに見 ...

GASとLINEを連携させて通知メッセージを送る方法のメモ
GASとLINEを連携させて通知メッセージを送る方法のメモ

Google Apps ScriptとLINEを連携させ、LINEに何らかの通知 ...

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

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

GASでNintendo Storeをチェックし指定したソフトが〇円以下の際に通知する方法
GASでNintendo Storeをチェックし指定したソフトが〇円以下の際に通知する方法

Google Apps Scriptを利用してNintendo Storeをスク ...