Как мне разобрать вывод phantom.js в php? - PullRequest
0 голосов
/ 22 января 2019

Я могу получить вывод из запроса phantom.js из командной строки, и вывод - это то, что я ожидаю.Я хотел бы вызвать phantom.js из сценария php, а затем проанализировать вывод в поисках определенного содержимого.

Мой phantom.js выглядит следующим образом:

var page = require('webpage').create();
console.log('The default user agent is ' + page.settings.userAgent);
page.settings.userAgent = 'SpecialAgent';

page.open('https://www.aa.com/travelInformation/flights/status/detail?search=AA|1698|2019,1,23&ref=search', function(status) {
if (status !== 'success') {
    console.log('Unable to access network');
} else {
    var ua = page.evaluate(function() {
        return document.getElementById('aa-content-frame').innerHTML;
    });
    console.log(ua);
}
phantom.exit();
});

Если я запускаю следующее изкомандная строка:

phantomjs phantomjstest.js

Я получаю вывод, похожий на:

The default user agent is Mozilla/5.0 (Unknown; Linux x86_64) AppleWebKit/538.1 (KHTML, like Gecko) PhantomJS/2.1.1 Safari/538.1

<app-root-flight-status data="{&quot;queryString&quot;:&quot;AA|1698|2019,01,23&quot;,
&quot;bffUri&quot;:&quot;https://www.aa.com/flightinfo/v1.0/&quot;,
&quot;email&quot;:&quot;&quot;,
&quot;countryCode&quot;:&quot;&quot;,
&quot;phoneNumber&quot;:&quot;&quot;}" _nghost-c0="" ng-version="6.1.4"><router-outlet _ngcontent-c0=""></router-outlet><app-flight-details _nghost-c1=""><!----><!----><div _ngcontent-c1=""><!----><h1 _ngcontent-c1=""> Flight status</h1>

... blah blah blah ...

Что я хотел бы сделать, это запустить phantom.js из сценария php, как это:

$response = exec('/usr/bin/phantomjs phantomjstest.js');

и затем продолжите выполнение сценария php с кодом, который анализирует вывод.

Когда я выполняю свой сценарий php:

<?php

$response = exec('/usr/bin/phantomjs phantomjstest.js');

$query = mysqli_query($link, "INSERT INTO test (t_test) VALUES('11 - " . $response  . "')");

echo "Response = <br /><br />".$response;

?>

Кажется, $ response пуст.Он не отображается на экране, и в базу данных добавляется только «11 -».Я предполагаю, что это потому, что phantomjstest.js записывает «ua» на консоль.

Мой вопрос заключается в том, как перевести javascript-переменную ua в точку, где я могу ее проанализировать в своем php-скрипте.Есть идеи?

1 Ответ

0 голосов
/ 22 января 2019

Exec PHP не возвращает вывод.

Второй аргумент заполняется выводом команды, например:

<?php
$response = [];
exec('/usr/bin/phantomjs phantomjstest.js', $response);

var_dump($response);

Пожалуйста, ознакомьтесь с официальной документацией: http://php.net/manual/en/function.exec.php

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...