1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Puppeteer(ぱぺてぃあ)、Headress Recorderで自動化が進んだ

Posted at

#実現させたいこと
とあるサイトのマイページから、データを毎日ダウンロードしたい。しかし、ダウンロードには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で指定した。

お客様番号のクリック
const customerNumber = '123456'; //文字列型で店舗番号を指定
const customerLink = "//a[contains(@onclick,customerNumber)]";  //XPathを検索

await page.waitForXPath(customerLink);
const customerLinkClick = await page.$x(customerLink);
await customerLinkClick[0].click();

##②ダウンロード先の指定

ダウンロード先を指定
  const downloadPath = 'C:\\yyy\\xxx\\test'; // 絶対パスで指定
  await page._client.send(
    'Page.setDownloadBehavior',
    { behavior: 'allow', downloadPath: downloadPath }
  );

感想

・学習コストは低め。PythonとGASしか使ったことがない私でも、環境の設定からはじめて、1日あれば使えた。Headless Recorderが偉大。

参考

Puppeteer入門(本)
HeadlessRecorder

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?