GASで特定サイトをスクレイピングし、画像を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どちらも対応できるようにしたいところ。
参考サイト
関連記事
-
-
GASとAdSense Management APIを使って前日分の売り上げをメール通知する方法
Googleアドセンスの売り上げをチェックする際、いつもはアドセンスの管理画面に ...
-
-
GASとGoogleアナリティクスを連携させ昨日分のアクセス数TOP3位のページタイトル及び合計アクセス数を取得する方法
GASとGoogleアナリティクスを連携させて「昨日分のアクセス数TOP3位のペ ...
-
-
GASで特定サイトにログインした後にスクレイピングを行う方法
Google Apps Scriptの勉強として特定サイトにログインし、その後に ...
-
-
GASとChatworkを連携してメッセージを送信する方法
Google Apps Scriptの勉強として「Chatwork」と連携させて ...
-
-
GASとDrive APIを組み合わせて画像やPDFファイルをOCR処理する方法
Googleドライブに保存した画像やPDFファイルをOCR処理し、ファイル内のテ ...