Web 開発では、ヘッドレス ブラウザのシミュレーションは非常に一般的な要件です。通常、Web サイト上でクロールやテストを自動化する必要がある場合、従来のブラウザを使用するのは非常に不便ですが、ヘッドレス ブラウザを使用すると、ブラウザ ウィンドウを開くことなく Web サイトを操作できます。
PhantomJS は JavaScript で書かれたヘッドレス ブラウザで、Web ページを開く、リンクをクリックする、フォームに記入するなど、ブラウザのすべての操作をシミュレートできます。次の記事では、PHP で PhantomJS を使用してヘッドレス ブラウザー シミュレーションを行う方法を説明します。
PhantomJS を使用するには、まずオペレーティング システムに PhantomJS をインストールする必要があります。 PhantomJS の公式 Web サイト (https://phantomjs.org/) からオペレーティング システムに適したバージョンをダウンロードし、公式ドキュメントの指示に従ってインストールできます。インストールされていることを確認したら、コマンド ライン インターフェイスで次のコマンドを実行して、それが使用可能かどうかをテストできます。
phantomjs --version
PhantomJS のバージョン番号が返された場合は、PhantomJS が正常にインストールされたことを意味します。
PhantomJS はスタンドアロン アプリケーションですが、PHP で使用するには、PhantomJS ライブラリもインストールする必要があります。このライブラリは、Composer などのパッケージ管理ツールを使用してインストールできます。コマンド ライン インターフェイスで次のコマンドを実行してインストールします。
composer require jonnyw/php-phantomjs
このライブラリを使用すると、PHP で PhantomJS メソッドを使用して、ヘッドレス ブラウザ シミュレーションを実行できます。
以下は、PhantomJS を使用して PHP で Web ページのスクリーンショットを実行し、それをローカルに保存するサンプル コードです:
<?php require 'vendor/autoload.php'; // 引入PhantomJS库 use JonnyWPhantomJsClient; // 创建一个PhantomJS客户端对象 $client = Client::getInstance(); // 打开一个网页并截图 $request = $client->getMessageFactory()->createCaptureRequest('http://example.com', 'GET'); $response = $client->getMessageFactory()->createResponse(); $client->send($request, $response); // 发送请求并等待响应 if ($response->getStatus() === 200) { // 判断请求是否成功 $image = $response->getContent(); // 获取响应的内容即截图 file_put_contents('example.png', $image); // 将截图保存到本地 }
コード 実行後、現在のディレクトリに example.png という名前のファイルが見つかります。これがスクリーンショットの結果です。
PhantomJS では、スクリーンショットに加えて、フォームへの入力やリンクのクリックなど、その他の Web ページ操作も実行できます。 、要素テキストの取得など。以下は、PhantomJS を使用して PHP の Baidu 検索ボックスに入力し、検索結果リンクを取得するサンプル コードです。
<?php require 'vendor/autoload.php'; // 引入PhantomJS库 use JonnyWPhantomJsClient; // 创建一个PhantomJS客户端对象 $client = Client::getInstance(); // 打开百度首页并搜索关键词 $request = $client->getMessageFactory()->createRequest('https://www.baidu.com', 'GET'); $request->setDelay(5); // 等待5秒以确保页面已经加载完毕 $client->send($request); $form = $client->getMessageFactory()->createForm(); $form->setField('wd', 'PhantomJS'); $form->setSubmitButton(); // 模拟点击搜索按钮 $request = $form->buildRequest(); $response = $client->getMessageFactory()->createResponse(); $client->send($request, $response); // 发送请求并等待响应 if ($response->getStatus() === 200) { // 判断请求是否成功 $page = $response->getContent(); // 获取响应的内容即页面源码 $dom = new DOMDocument(); @$dom->loadHTML($page); // 加载页面源码以便解析 $xpath = new DOMXPath($dom); $links = $xpath->query("//h3[@class='t']/a"); // 查询所有搜索结果链接的标题 foreach ($links as $link) { echo $link->getAttribute('href') . " "; // 输出链接地址 } }
このサンプル コードは、すべての検索結果リンクのアドレスを出力します。
概要
この記事では、PHP で PhantomJS を使用してヘッドレス ブラウザー シミュレーションを行う方法を紹介しました。これらのテクノロジーを使用して、Web ページのスクリーンショット、自動テスト、クローラーなどを実行できます。もちろん、PhantomJS はメンテナンスを停止しているため、より高度なヘッドレス ブラウザ ツールを使用することをお勧めします。
以上がヘッドレスブラウザシミュレーションにPhantomJSを使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。