Heim  >  Artikel  >  Backend-Entwicklung  >  Wie verwende ich PhantomJS für die Headless-Browsersimulation?

Wie verwende ich PhantomJS für die Headless-Browsersimulation?

WBOY
WBOYOriginal
2023-06-01 08:24:102549Durchsuche

Headless-Browser-Emulation ist eine sehr häufige Anforderung in der Webentwicklung. Wenn Sie unter normalen Umständen eine Website crawlen oder Tests automatisieren müssen, ist die Verwendung eines herkömmlichen Browsers sehr unpraktisch. Mit einem Headless-Browser können wir die Website jedoch bedienen, ohne das Browserfenster zu öffnen.

PhantomJS ist ein in JavaScript geschriebener Headless-Browser, der alle Vorgänge des Browsers simulieren kann, z. B. das Öffnen von Webseiten, das Klicken auf Links, das Ausfüllen von Formularen usw. Im folgenden Artikel erklären wir, wie man PhantomJS in PHP für die Headless-Browsersimulation verwendet.

  1. PhantomJS installieren

Um PhantomJS verwenden zu können, müssen Sie es zunächst auf Ihrem Betriebssystem installieren. Sie können die für Ihr Betriebssystem geeignete Version von der offiziellen Website von PhantomJS (https://phantomjs.org/) herunterladen und diese dann gemäß den Anweisungen in der offiziellen Dokumentation installieren. Nachdem Sie sichergestellt haben, dass es installiert ist, können Sie den folgenden Befehl in der Befehlszeilenschnittstelle ausführen, um zu testen, ob es verfügbar ist:

phantomjs --version

Wenn die Versionsnummer von PhantomJS zurückgegeben wird, bedeutet dies, dass PhantomJS erfolgreich installiert wurde.

  1. Installieren Sie die PhantomJS-Bibliothek für PHP

Obwohl PhantomJS eine eigenständige Anwendung ist, müssen Sie zur Verwendung in PHP auch eine PhantomJS-Bibliothek installieren. Sie können Paketverwaltungstools wie Composer verwenden, um diese Bibliothek zu installieren. Führen Sie zur Installation den folgenden Befehl in der Befehlszeilenschnittstelle aus:

composer require jonnyw/php-phantomjs

Mit dieser Bibliothek können Sie PhantomJS-Methoden in PHP verwenden, um eine Headless-Browsersimulation durchzuführen.

  1. Verwenden Sie PhantomJS, um Webseiten-Screenshots zu erstellen

Das Folgende ist ein Beispielcode, der PhantomJS verwendet, um Webseiten-Screenshots in PHP zu erstellen und lokal zu speichern:

<?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); // 将截图保存到本地
}

Nachdem der Code ausgeführt wurde, finden Sie eine Datei mit dem Namen example.png In der aktuellen Verzeichnisdatei ist dies das Ergebnis des Screenshots.

  1. Verwenden Sie PhantomJS, um Webseitenvorgänge auszuführen und Ergebnisse zu erhalten

Neben Screenshots kann PhantomJS auch weitere Webseitenvorgänge ausführen, z. B. das Ausfüllen von Formularen, das Klicken auf Links, das Abrufen von Elementtext usw. Das Folgende ist ein Beispielcode, der PhantomJS verwendet, um das Baidu-Suchfeld in PHP auszufüllen und die Suchergebnisse-Links zu erhalten:

<?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') . "
"; // 输出链接地址
    }
}

Dieser Beispielcode gibt die Adressen aller Suchergebnisse-Links aus.

Zusammenfassung

In diesem Artikel haben wir behandelt, wie man eine Headless-Browsersimulation mit PhantomJS in PHP durchführt. Sie können diese Technologien verwenden, um Webseiten-Screenshots, automatisierte Tests, Crawler usw. durchzuführen. Natürlich hat PhantomJS die Wartung eingestellt und es wird empfohlen, fortschrittlichere Headless-Browser-Tools zu verwenden.

Das obige ist der detaillierte Inhalt vonWie verwende ich PhantomJS für die Headless-Browsersimulation?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn