勉強したことのメモ

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を使って任天堂ホームページ更新情報のRSSを取得する方法
GASを使って任天堂ホームページ更新情報のRSSを取得する方法

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

GASとGmailを連携させて受信メール検索及びメール送信
GASとGmailを連携させて受信メール検索及びメール送信

Google Apps ScriptとGmailを連携させてみたい。「未読かつ特 ...

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

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

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

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

GASで祝日一覧(年月日と祝日名)データをJSON出力するAPIを作成
GASで祝日一覧(年月日と祝日名)データをJSON出力するAPIを作成

PHPのシステム案件で祝日を取得し、処理を行う箇所があった。Googleカレンダ ...