2020年2月13日コピペで簡単!puppeteerのこんなとき実例8件さてさて、このところNode.js(Express)での開発を続けていて色々と新しい技術や開発思想に触れる機会を多く持つことができました。学ぶことは多いのですが、Node.jsを使った開発はある程度理解が深まってきたので、この辺で、「これは今後も使いそう。複雑ですぐ忘れちゃいそう・・・😅」という内容を備忘録的にまとめておくことにしました。いうことで、今回は「実際のブラウザを使ってウェブサイトにアクセスできる」puppeteerを使った「こんなとき」をご紹介していきたいと思います。※puppeteerのインストール方法や基本的な使い方は、以前「JavaScriptでレンダリングしてるページをスクレイピングする方法」という記事を公開していますので、ぜひそちらをご覧ください。合わせて読みたいスタイルシートやJavaScript、画像などの外部ファイルを読み込まないようにする大多数のウェブページでは、ひとつのページだけでなくスタイルシートやJavaScript、画像などを使って装飾や動きを加えています。それらは、.cssや.jsなど外部ファイル化している場合が多いですよね。スクレイピングをする場合にはこういった「外部ファイル」が不要だったりする場合があったりします。なによりpuppeteerはchromeを使っているとはいえ、全ての外部ファイルを読み込んでしまうとサーバーに負荷がかかりすぎて動かなくなってしまう場合もあります。そんな場合は、次のようにして不要なURLは事前に読み込みをキャンセルすることができます。JAPAN})();流れとしては、Chromeが外部ファイルにリクエストをする直前にabort()を使ってキャンセルをしています。細かくアクセスするURLを分けたい場合は以下がresourceType()で取得できるリソースタイプになりますので、if文などで制御するといいでしょう。documentstylesheetimagemediafontscripttexttrackxhrfetcheventsourcewebsocketmanifestotheriFrameを読み込まないようにする基本的に外部ファイルを遮断するには、前項目の「スタイルシートやJavaScript、画像などの外部ファイルを読み込まないようにする」で実現できますが、実はiFrameだけはリソースタイプが同じくdocumentになってしまうので、それだけでは遮断することができません。そのため、iFrameの遮断をするには以下のようにframeattachedを使って「次読み込むURLはiFrameのものなのかどうか」で判別します。Iframes})();HTTPステータスコードを取得する例えば、アクセスがうまくいったときの200やページが存在しないことを意味する404、エラーの500などのステータスコードを取得するには、responseを読み取ることで実現できます。200})();なお、レスポンスヘッダー全てを取得するには、response.headers()を使ってください。以下は、取得できるデータのサンプルです。JAPANにはjQueryは使われていませんが、強制的にcdnのjQueryを読み込ませて$()を使ってみます。JAPAN})();POST送信するPOSTメソッドでアクセスするには、以下のようにcontinue()でメソッドを指定します。Chromeです!」などと名乗ることができる文字列です。Safari/537.36ユーザーエージェントをセットするには以下のようにします。Chromeではこのユーザーエージェントの機能を今後縮小していく方針のようです。Cookieを追加する特定のCookieをセットしてウェブサイトにアクセスするには、setCookie()を使います。browser.newPage();page.setCookie(...cookies);※Cookieの内容は配列でいくつでも追加できます。スクリーンショットをとるウェブサイトのスクリーンショットをとるには以下のようにします。'./screenshot.png'});})();おわりにということで、今回はNode.jsの強力な武器といってもいいpuppeteerの使い方をケースごとに紹介しました。puppeteerは今回紹介した以外にも色々なことができますので、今後何か「おっ!」というものがありましたら、その都度このページに追加していきたいと思います。開発スキルプログラム開発は15年以上。Laravel、Vue.jsをメインとしてPython(機械学習)やElectronの開発もお引き受けしております。過去2度カナダのバンクーバーに滞在していました。開発状況によりましては開発をお待ちいただく可能性がございますが、いつでもご相談は受けさせていただいております。お気軽にご連絡ください!お問い合わせフォーム開発してほしい機能を募集中!MITライセンスで公開します。詳しくはこちらの記事をご覧ください。ぷれりり・プレスリリース掲載無料のプレスリリース・スタンド!播磨孤道(はりまこどう)兵庫周辺のゆったり自転車一人旅の記事を書いていきます。