読了目安:15分ふと、puppeteerがおもしろそうだなと思い、前から欲しかったTwitterブックマークをJSONファイルにエクスポートするツールを題材に、いろいろ遊んでみた時に備忘録。2019最終的なソースコードはGitHubで公開中。Puppeteerただ、注意事項がたくさんですが。基本的にはこんな感じ。falseにすると、ブラウザが立ち上がって、動作確認画できる。10の値を大きくすると、スローモーションのように操作がゆっくりになる。});オプションのwaitUntilを指定すると、その条件が満たされるまでwaitする。指定できるのは、以下の4つ。ネットワーク接続が2個である状態が500ミリ秒続いたときSPAとかの場合は、networkidle2とかまで待つと良さそう。page.$$('.button');実際はElementHandleが返ってくる。1件取得と全件取得があるので注意。selectorsが使える。XPATHで書けるpage.$x();というのもある。v.click())クリックなど、JavaScriptを実行する方法はいくつかある。SPAなサイトだとうまく行かない場合があるが、page.evaluaateなどを使うとうまくいく時がある。html_body);エクスポートするツールを作ってみるやりたいことは、こんな感じ。navigationPromise;}ブックマークのエクスポート処理くり返す処理はこんな感じ。ツイートは<article>タグのようなので、それを起点に処理を進めていく。bookmarks;}無限ローディングを持つような場合、適宜スクロールしないと要素が表示されないので、ツイートごとにスクロールしている。ブックマークしたツイートから情報を取得かなりTwitterの仕様によっているけど取得したい要素を特定して、その要素を取得するセレクタを書き、innterTextやtextContentで文字を取得するといった、感じのことをしている。}};こんな感じで、「要素を探す→クリック→少し待つ」のくり返し。ブラウザで操作しているときでも、削除されないときがある。́ω`)ただ、Twitterみたいなのを対象にするのは結構大変だった。SPAなど動的に変わる部分が多いサイトだと、クリックなどがうまく動かないことがある対象サイトのJavaScriptが正しく動作しない場合がある。実行や動作確認に時間がかかるので、テストにかなり時間がかかるあと、サイトのデザインが変わると追従対応しないといけない。Kotlin/Python/Swift/Unity/Java/Haskell/DDDhttps://t.co/X3UXpmkJvpCrieitは個人で開発中です。どんな軽い内容でも嬉しいです。Crieitを作ろうと思ったかまた、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください!ボードとは?関連記事スワイプで気になるAV女優を探すことができる「AVキャッチャー」というサービスをリリースしました。