勉強したことのメモ

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とAdSense Management APIを使って前日分の売り上げをメール通知する方法
GASとAdSense Management APIを使って前日分の売り上げをメール通知する方法

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

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

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

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

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

GASとDrive APIを組み合わせて画像やPDFファイルをOCR処理する方法
GASとDrive APIを組み合わせて画像やPDFファイルをOCR処理する方法

Googleドライブに保存した画像やPDFファイルをOCR処理し、ファイル内のテ ...

GASとChatworkを連携してメッセージを送信する方法
GASとChatworkを連携してメッセージを送信する方法

Google Apps Scriptの勉強として「Chatwork」と連携させて ...