普通のブラウザならクリックしてファイルをダウンロードするとは当たり前にできる事です
自分の記憶だと1995年ぐらいからできた。
ただブラウザの自動化ツールのpuppeteerでやるのは大変なのです
クリックイベントを起こして新しいターゲットが作成されたイベントを拾ってきて
その結果をバイナリ保存する・・・面倒くさい!!
でも結果をCSVで保存とかどのシステムでもあるので今後のためにもマスターしたい
ソース
解説
その1・新しいターゲットが発生したとき 7行目
browser.on('targetcreated', async (target) => {
これは 新しいタブを開くなどのターゲットが増えた時のイベント
その2・必要なイベントを無視している 8〜12行目
let s = target.url(); //初期に開くabout:blankは無視する if (s == 'about:blank') { return; }
puppeteerの初期でも新しいターゲットのイベントが発生するのですが
これは必要ないイベントなので無視する
その3・ダウンロード部分 13〜20行目
s = s.replace("data:application/csv;charset=utf-8,", ""); s = s.replace(/%2F/g, "/"); s = s.replace(/%2C/g,","); s = s.replace(/%22/g,'"'); s = s.replace(/%20/g," "); s = s.replace(/%0A/g,"\n") s = s.replace(/%0D/g,"");
ここが重要でs = target.url()でCSVのダウンロード文字列がとれる
必要なデータ以外を削除している
納得がいかない部分だけどこれで CSVがダウンロードできる
自動化をするツールを作ることが今後、増えそうなので忘れないようにしたい