puppeteerの「Node is detached from document」の対処法

最初に結論

クリック処理をpage.evaluate()の中でやれば良き。

はじめに

残業してるフリして家でやってる作業を会社でやれば、残業代もらいながら趣味の時間を過ごせることに気がつきました。
どうも、伊藤くんです。

伊藤くんの大好きなpuppeteerでスクレイピングのコードを書いていたのですが、こんなエラーに出会いました。

Error: Node is detached from document

具体的には、とあるサイトのとあるボタンをpage.click()でクリックしようとした時に発生しました。(あんまり具体的じゃない)

それも、毎回発生するわけではなくたまに発生するのです。10回に一回くらい。
ヘッドレスモードの場合だと、2回に1回くらい発生しやがります。

調べてみると、どうやらインスタのウェブページみたいな複雑なレンダリングをするような高度なサイトで起こりがちとのこと。
https://github.com/GoogleChrome/puppeteer/issues/3496

読んでも具体的な原因はよくわからなかった。ふーむ、ちょっと厄介そう。

解決策

厄介そう。とか思ってたらあっさり解決できました。てか普通にさっきのサイトに書いてあった。

クリック処理を、page.evaluate()の中でやればいいらしいです。それだけです。

理由はまあ、よくわからないけど、なんていうか確かにpage.evaluate()さんならやってくれる感じしますわ。

というわけで、というわけです。おやすみなさい。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です