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を利用してGmailに届いたメール内容をGoogleスプレッドシートに記入する方法
WordPressのContact Form7から送信した内容をGmailで受け ...
-
-
GASで祝日一覧(年月日と祝日名)データをJSON出力するAPIを作成
PHPのシステム案件で祝日を取得し、処理を行う箇所があった。Googleカレンダ ...
-
-
GASでGoogleカレンダーと連携してイベントの取得・追加・削除
Google Apps Scriptの勉強としてGoogleカレンダーと連携させ ...
-
-
GASを使ってみて感じたメリットとデメリット
Google Apps Scriptを色々勉強した中で感じたメリットとデメリット ...
-
-
GASのプログラム実行時間計測方法と各種制限についてのメモ
PHP等でプログラムを組んでいると、あまり実行時間について気にすることはなかった ...