ホームページ  >  記事  >  バックエンド開発  >  ヘッドレスブラウザシミュレーションにPhantomJSを使用するにはどうすればよいですか?

ヘッドレスブラウザシミュレーションにPhantomJSを使用するにはどうすればよいですか?

WBOY
WBOYオリジナル
2023-06-01 08:24:102549ブラウズ

Web 開発では、ヘッドレス ブラウザのシミュレーションは非常に一般的な要件です。通常、Web サイト上でクロールやテストを自動化する必要がある場合、従来のブラウザを使用するのは非常に不便ですが、ヘッドレス ブラウザを使用すると、ブラウザ ウィンドウを開くことなく Web サイトを操作できます。

PhantomJS は JavaScript で書かれたヘッドレス ブラウザで、Web ページを開く、リンクをクリックする、フォームに記入するなど、ブラウザのすべての操作をシミュレートできます。次の記事では、PHP で PhantomJS を使用してヘッドレス ブラウザー シミュレーションを行う方法を説明します。

  1. PhantomJS のインストール

PhantomJS を使用するには、まずオペレーティング システムに PhantomJS をインストールする必要があります。 PhantomJS の公式 Web サイト (https://phantomjs.org/) からオペレーティング システムに適したバージョンをダウンロードし、公式ドキュメントの指示に従ってインストールできます。インストールされていることを確認したら、コマンド ライン インターフェイスで次のコマンドを実行して、それが使用可能かどうかをテストできます。

phantomjs --version

PhantomJS のバージョン番号が返された場合は、PhantomJS が正常にインストールされたことを意味します。

  1. PHP 用の PhantomJS ライブラリをインストールする

PhantomJS はスタンドアロン アプリケーションですが、PHP で使用するには、PhantomJS ライブラリもインストールする必要があります。このライブラリは、Composer などのパッケージ管理ツールを使用してインストールできます。コマンド ライン インターフェイスで次のコマンドを実行してインストールします。

composer require jonnyw/php-phantomjs

このライブラリを使用すると、PHP で PhantomJS メソッドを使用して、ヘッドレス ブラウザ シミュレーションを実行できます。

  1. PhantomJS を使用して Web ページのスクリーンショットを実行する

以下は、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 という名前のファイルが見つかります。これがスクリーンショットの結果です。

  1. PhantomJS を使用して Web ページ操作を実行し、結果を取得する

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。