実現させたいこと
とあるサイトのマイページから、データを毎日ダウンロードしたい。しかし、ダウンロードには1,000クリック程度必要。
画面が遷移してもURLが変わらないので、SeleniumやPRAでの実現は難しい。
Chrome操作の自動化ができ、さらにExcelマクロのような録画ツールもあるそうなので、puppeteerを試してみた。
環境構築と習得に1日ほどかかったが、使いやすくて感動!
puppeteerとは
Chromeブラウザを操作できるNode.jsのライブラリ
ヘッドレスブラウザを使用できるので高速
Headless Recorderを使う
HeadlessRecorderをChromeの拡張機能に追加。
録画ボタンを押して、録画したい操作をすると、Puppeteerコードを出力してくれる。
puppeteerで必要なidやclassを調べる手間が省けて便利。
Headless Recorderでできなかったこと
①録画が上手くいかない箇所があった
idやclassが一意でない箇所で、コードに落とせていない操作があった。
お客様番号を使って指定できそうだったので、お客様番号を含むXpathで指定した。
お客様番号のクリック
constcustomerNumber='123456';//文字列型で店舗番号を指定constcustomerLink="//a[contains(@onclick,customerNumber)]";//XPathを検索awaitpage.waitForXPath(customerLink);constcustomerLinkClick=awaitpage.$x(customerLink);awaitcustomerLinkClick[0].click();
②ダウンロード先の指定
ダウンロード先を指定
constdownloadPath='C:\\yyy\\xxx\\test';// 絶対パスで指定awaitpage._client.send('Page.setDownloadBehavior',{behavior:'allow',downloadPath:downloadPath});
感想
・学習コストは低め。PythonとGASしか使ったことがない私でも、環境の設定からはじめて、1日あれば使えた。Headless Recorderが偉大。