LoginSignup
0
1

More than 5 years have passed since last update.

puppeteerを使って遊びながら学んだメモ

Last updated at Posted at 2019-03-17

開発環境

Docker Composeによる開発環境の構築(TypeScript,Node.js,Redis,Elasticsearch) - なになれ
https://hi1280.hatenablog.com/entry/2018/12/16/105201

ひとまず、こちらをベースに試した

インフラ

Puppeteerの使い方(スクレイピング, フロントテストで活用) - わくわくBank
https://www.wakuwakubank.com/posts/620-javascript-puppeteer/

lambdaならwebsocketを使う
chroniumを使うなど切り替えできるっぽい

waitForNavigationが有効なパターンなど理解しないずれる

PuppeteerによるヘッドレスChromeの使い方 evaluate | iwb.jp
https://iwb.jp/puppeteer-headless-chrome-evaluate/

特殊文字があるID名の指定が若干ややこしい

page.typeではそのままで使えたが、page.$ではエスケープ(二重にエスケープ)する必要があるっぽい
querySelectorというのを使っていたり、内部的な事情を把握すれば整理できるっぽい

Puppeteerの使い方(スクレイピング, フロントテストで活用) - わくわくBank
https://www.wakuwakubank.com/posts/620-javascript-puppeteer/

puppeteerに限らないが型の指定で迷って妥協した

puppeteer.Pageやelasticsearch.Clientをインスタンス変数にしてみたが、
インスタンスの保持するプロパティに対してコードをうまく追いかけられなかった

一部、importでうまく書けなかった

// const launchChrome = require('@serverless-chrome/lambda');
// const CDP = require('chrome-remote-interface');

コンストラクタにasyncを設定しようとして困った

あまりいい解決をしなかった気がする
decoratorとか試してみたけど違った

いろんな指定方法

puppeteerでの要素の取得方法 - Qiita
https://qiita.com/go_sagawa/items/85f97deab7ccfdce53ea#%E4%B8%80%E3%81%A4%E3%82%BB%E3%83%AC%E3%82%AF%E3%82%BF%E3%83%BC%E3%81%AE%E4%B8%80%E3%81%A4%E3%81%AE%E8%A6%81%E7%B4%A0%E3%82%92%E3%81%A8%E3%82%8B

取得した後でさらに絞り込み

Puppeteerで page.$(selector) で絞り込んだ要素から更に子要素指定を行う - PhpStormと僕
http://vexus2.hatenablog.jp/entry/puppeteer_selector

HowTo

puppeteerでスクレイピング - Qiita
https://qiita.com/tomi_shinwatec/items/a68cf7840c3da002c6e0

puppeteerでよく使うであろう処理の書き方 - Qiita
https://qiita.com/rh_taro/items/32bb6851303cbc613124#value%E3%81%AE%E5%8F%96%E5%BE%97

Puppeteerメモ :: Chrome | Refills
https://syon.github.io/refills/rid/1516155/

ワンステップ高い使い方

MutationObserverを呼ぶ

Monitor for text change in an element · Issue #2945 · GoogleChrome/puppeteer
https://github.com/GoogleChrome/puppeteer/issues/2945

ベースにした

JavaScriptのMutationObserverでDOMの変化を監視する方法 - Qiita
https://qiita.com/munieru_jp/items/a6f1433652124a2165e4

アロー関数でシンプルに。

十七章第一回 MutationObserver — JavaScript初級者から中級者になろう — uhyohyo.net
https://uhyohyo.net/javascript/17_1.html

MutationObserver自体の説明がよかった

【DOM基礎】要素内容の取得・設定/ノードの作成・挿入・削除 - Qiita
https://qiita.com/KDE_SPACE/items/3c4b52d077b8eabbe670

domの再学習

JSHandleってなんだろう

未解決

puppeteer/api.md at master · GoogleChrome/puppeteer
https://github.com/GoogleChrome/puppeteer/blob/master/docs/api.md#jshandleaselement

0
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
0
1