1. ホーム
  2. javascript

[解決済み] PhantomJSを用いたWebスクレイピング

2022-02-18 02:10:18

質問

実行する関数を指定せずに、ブラウザと全く同じようにWebページ内のすべてのJavaScriptを実行する方法はありますか?私が見たほとんどの例では、これらは、掻き集められたウェブページから実行したいJavaScriptの部分を指定するようです。私はすべてのコンテンツをスクレイピングし、ブラウザのようにすべてのJavaScriptを実行し、google inspectを使って見ることができる最終的な実行コードを取得する必要があるのですか?

何か方法があるはずなのですが、PhantomJSのサンプルコードには、これに対応する例がないようでした。

どのように解決するのですか?

PhantomJSでページから実行されるものを指定しない。PhantomJSでページを開くと、ChromeやFirefoxで実行されるすべてのJavaScriptが、PhantomJSでも実行されます。これは、head"のないフルブラウザです。

しかし、いくつかの相違点があります。ダウンロードリンクをクリックしても、ダウンロードが開始されません。PhantomJS 1.xがベースにしているレンダリングエンジンは4年近く前のものなので、PhantomJS 1.xがその機能をサポートしていない可能性があり、いくつかのページは単に異なる方法でレンダリングされています。(PhantomJS 2は現在開発中で、非公式なquot;alpha"の状態です)

そのため、ユーザーがページ上で行うすべてのインタラクションを、JavaScriptまたはCoffeeScriptでスクリプト化する必要があります。ページの関数を呼び出すのではありません。DOM要素を操作して、ユーザーがブラウザ上でページとやりとりしている様子をシミュレートするのです。これを行うには 粗雑 というのも、PhantomJS APIは高度なユーザーライク機能を提供していないからです。もしそれらが必要であれば、次のものを見る必要があります。 キャスパーJS PhantomJS/SlimerJSの上に構築されたものです。

そこで、実際に click , wait , fetchText など。