为什么php phantomjs没有在响应内容中执行js代码
我需要用已执行的js获取html。为此,我安装了phantomjs,但在获取内容中,我仍然有旧的html和旧的数据,数据应该由js脚本处理,应该更改为带有某个类的span标记,应该执行哪个脚本。我正确理解,当我打开get content时,我应该使用处理过的数据获取DOM,这意味着标记span而不是json元素?我说了什么为什么php phantomjs没有在响应内容中执行js代码,php,php-phantomjs,Php,Php Phantomjs,我需要用已执行的js获取html。为此,我安装了phantomjs,但在获取内容中,我仍然有旧的html和旧的数据,数据应该由js脚本处理,应该更改为带有某个类的span标记,应该执行哪个脚本。我正确理解,当我打开get content时,我应该使用处理过的数据获取DOM,这意味着标记span而不是json元素?我说了什么 public function getContentByPhantomjs($url) { $client = Client::getInstance();
public function getContentByPhantomjs($url)
{
$client = Client::getInstance();
$client->getEngine()->addOption('--ssl-protocol=any');
$client->getEngine()->addOption('--ignore-ssl-errors=true');
$client->getEngine()->addOption('--web-security=false');
$client->getEngine()->setPath(MY_PATH . 'bin/phantomjs');
$request = $client->getMessageFactory()->createRequest($url, 'GET');
$response = $client->getMessageFactory()->createResponse();
// Send the request
$client->send($request, $response);
return $response->getStatus() === 200 ? $response->getContent() : false;
}
但是js没有执行,我没有在#pretty_json_id中处理数据
<div class="headline">
<div id="pretty_json_id">
<pre>
{"Company":"test"}
</pre>
</div>
<script>
function ready() {
element = document.getElementById('pretty_json_id').getElementsByTagName('pre');
if (element.length > 0) {
let parseJson = JSON.parse(element[0].innerHTML);
let stringifyJson = JSON.stringify(parseJson, undefined, 4);
element[0].innerHTML = syntaxHighlight(stringifyJson);
}
}
function syntaxHighlight(json) {
json = json.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');
return json.replace(/("(\\u[a-zA-Z0-9]{4}|\\[^u]|[^\\"])*"(\s*:)?|\b(true|false|null)\b|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?)/g, function (match) {
var cls = 'number';
if (/^"/.test(match)) {
if (/:$/.test(match)) {
cls = 'key';
} else {
cls = 'string';
}
} else if (/true|false/.test(match)) {
cls = 'boolean';
} else if (/null/.test(match)) {
cls = 'null';
}
return '<span class="' + cls + '">' + match + '</span>';
});
}
document.addEventListener("DOMContentLoaded", ready);
</script>
{“公司”:“测试”}
函数就绪(){
element=document.getElementById('pretty_json_id').getElementsByTagName('pre');
如果(element.length>0){
让parseJson=JSON.parse(元素[0].innerHTML);
让stringifyJson=JSON.stringify(parseJson,未定义,4);
元素[0]。innerHTML=syntaxHighlight(stringifyJson);
}
}
函数syntaxHighlight(json){
json=json.replace(//&/g,“&;”).replace(//g,”);
返回json.replace(/(“(\\u[a-zA-Z0-9]{4}\\\[^u]\\\\\\”)*”(\s*:)?\b(true | false | null)\b |-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)/g,函数(匹配){
var cls='数字';
如果(/^”/.test(匹配)){
如果(/:$/.test(匹配)){
cls=‘键’;
}否则{
cls='字符串';
}
}else if(/true | false/.test(匹配)){
cls='布尔';
}else if(/null/.test(匹配)){
cls='null';
}
返回“”+匹配+“”;
});
}
文件。addEventListener(“DOMContentLoaded”,就绪);
在浏览器中,everythink都可以工作。但我需要存在的html与执行的js
日志信息
2020-01-28T14:49:34[DEBUG]CookieJar-已创建但不会存储cookie(使用选项“--cookies file=”启用持久cookie存储)
2020-01-28T14:49:34[调试]将“http”代理设置为:“”:1080
2020-01-28T14:49:34[调试]幻影-执行:配置
2020-01-28014:49:34[调试]0对象名称:“
2020-01-28014:49:34[调试]1 cookiesFile:“
2020-01-28014:49:34[调试]2 diskCacheEnabled:“真”
2020-01-28014:49:34[调试]3 maxDiskCacheSize:“-1”
2020-01-28014:49:34[调试]4 diskCachePath:“
2020-01-28T14:49:34[调试]5忽略错误:“正确”
2020-01-28T14:49:34[调试]6 localUrlAccessEnabled:“真”
2020-01-28T14:49:34[调试]7 localToRemoteUrlAccessEnabled:“错误”
2020-01-28T14:49:34[调试]8输出编码:“UTF-8”
2020-01-28014:49:34[DEBUG]9代理类型:“http”
2020-01-28014:49:34[调试]10代理:“:1080”
2020-01-28T14:49:34[调试]11代理验证:“
2020-01-28T14:49:34[调试]12脚本编码:“UTF-8”
2020-01-28814:49:34[调试]13网站安全性已启用:“错误”
2020-01-28014:49:34[调试]14脱机存储路径:“
2020-01-28014:49:34[调试]15本地存储路径:“
2020-01-28014:49:34[调试]16 localStorageDefaultQuota:“-1”
2020-01-28T14:49:34[调试]17脱机存储默认配额:“-1”
2020-01-28T14:49:34[调试]18打印调试消息:“真”
2020-01-28T14:49:34[调试]19 javascriptCanOpenWindows:“真”
2020-01-28T14:49:34[调试]20 javascriptCanCloseWindows:“真”
2020-01-28014:49:34[调试]21 sslProtocol:“任何”
2020-01-28814:49:34[调试]22 sslCiphers:“ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES128-SHA:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-RC4-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-RC4-DSS-DSS-AES128-SHA:DHE-ECDHE-RSA-256-AES228-SA256-SCA:ECDHE-ECDHE-ECDSA-ECDSA-RC4-RC4-RC4-RC4-CSA:SC4-SC4-SC4-SCH:ECDHE-AESSA
2020-01-28014:49:34[调试]23 SSL证书路径:“
2020-01-28014:49:34[调试]24 SSLClientCertificate文件:“
2020-01-28014:49:34[调试]25 sslClientKeyFile:“
2020-01-28814:49:34[调试]26 sslClientKeyPassphrase:“
2020-01-28014:49:34[调试]27网络驱动程序:“
2020-01-28T14:49:34[调试]28 webdriverLogFile:“
2020-01-28814:49:34[调试]29 webdriverLogLevel:“信息”
2020-01-28814:49:34[调试]30 webdriverSeleniumGridHub:“
2020-01-28T14:49:34[调试]幻影-执行:脚本和参数
2020-01-28014:49:34[调试]脚本:“/tmp/1140ef46a6d6bfd239db”
2020-01-28014:49:34[调试]幻影-执行:启动正常模式
2020-01-28T14:49:34[调试]网页-设置框架“”
2020-01-28014:49:34[调试]文件系统-_open:::/modules/fs.js“QMap((“mode”,QVariant(QString,r)))
2020-01-28014:49:34[调试]文件系统-_open:::/modules/system.js“QMap((“mode”,QVariant(QString,r)))
2020-01-28014:49:34[调试]文件系统-_open:::/modules/webpage.js“QMap((“mode”,QVariant(QString,r)))
2020-01-28814:49:34[调试]网页-更新视频进度:10
2020-01-28014:49:35[调试]CookieJar-保存的“PHPSESSID=rh333emlg3vfov3u66e4lbkdkc;domain=cdb.preme.local;路径=/”
2020-01-28814:49:35[调试]网页-更新视频进度:30
2020-01-28814:49:35[调试]网页-更新视频进度:34
2020-01-28014:49:35[调试]网页-设置框架“”
2020-01-28T14:49:35[警告]QNetworkDiskCache::prepare()无法打开临时文件
2020-01-28T14:49:35[警告]QNetworkDiskCache::prepare()无法打开临时文件
2020-01-28814:49:35[调试]网页-更新视频进度:37
2020-01-28814:49:35[调试]网页-更新视频进度:40
2020-01-28814:49:35[调试]网页-更新视频进度:43
2020-01-28814:49:35[调试]网页-更新视频进度:100
2020-01-28014:49:35[调试]网页-evaluateJavaScript“(函数(){return(函数(){\n\n var styles={};\n\n for(样式中的var属性){\n document.body.style[property]=样式[property];\n}\n}\n}
2020-01-28T14:49:35[调试]网页-评估JavaScript结果QVariant
2020-01-28T14:49:34 [DEBUG] CookieJar - Created but will not store cookies (use option '--cookies-file=<filename>' to enable persistent cookie storage)
2020-01-28T14:49:34 [DEBUG] Set "http" proxy to: "" : 1080
2020-01-28T14:49:34 [DEBUG] Phantom - execute: Configuration
2020-01-28T14:49:34 [DEBUG] 0 objectName : ""
2020-01-28T14:49:34 [DEBUG] 1 cookiesFile : ""
2020-01-28T14:49:34 [DEBUG] 2 diskCacheEnabled : "true"
2020-01-28T14:49:34 [DEBUG] 3 maxDiskCacheSize : "-1"
2020-01-28T14:49:34 [DEBUG] 4 diskCachePath : ""
2020-01-28T14:49:34 [DEBUG] 5 ignoreSslErrors : "true"
2020-01-28T14:49:34 [DEBUG] 6 localUrlAccessEnabled : "true"
2020-01-28T14:49:34 [DEBUG] 7 localToRemoteUrlAccessEnabled : "false"
2020-01-28T14:49:34 [DEBUG] 8 outputEncoding : "UTF-8"
2020-01-28T14:49:34 [DEBUG] 9 proxyType : "http"
2020-01-28T14:49:34 [DEBUG] 10 proxy : ":1080"
2020-01-28T14:49:34 [DEBUG] 11 proxyAuth : ":"
2020-01-28T14:49:34 [DEBUG] 12 scriptEncoding : "UTF-8"
2020-01-28T14:49:34 [DEBUG] 13 webSecurityEnabled : "false"
2020-01-28T14:49:34 [DEBUG] 14 offlineStoragePath : ""
2020-01-28T14:49:34 [DEBUG] 15 localStoragePath : ""
2020-01-28T14:49:34 [DEBUG] 16 localStorageDefaultQuota : "-1"
2020-01-28T14:49:34 [DEBUG] 17 offlineStorageDefaultQuota : "-1"
2020-01-28T14:49:34 [DEBUG] 18 printDebugMessages : "true"
2020-01-28T14:49:34 [DEBUG] 19 javascriptCanOpenWindows : "true"
2020-01-28T14:49:34 [DEBUG] 20 javascriptCanCloseWindows : "true"
2020-01-28T14:49:34 [DEBUG] 21 sslProtocol : "any"
2020-01-28T14:49:34 [DEBUG] 22 sslCiphers : "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES128-SHA:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-RC4-SHA:ECDHE-RSA-RC4-SHA:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:RC4-SHA:RC4-MD5"
2020-01-28T14:49:34 [DEBUG] 23 sslCertificatesPath : ""
2020-01-28T14:49:34 [DEBUG] 24 sslClientCertificateFile : ""
2020-01-28T14:49:34 [DEBUG] 25 sslClientKeyFile : ""
2020-01-28T14:49:34 [DEBUG] 26 sslClientKeyPassphrase : ""
2020-01-28T14:49:34 [DEBUG] 27 webdriver : ":"
2020-01-28T14:49:34 [DEBUG] 28 webdriverLogFile : ""
2020-01-28T14:49:34 [DEBUG] 29 webdriverLogLevel : "INFO"
2020-01-28T14:49:34 [DEBUG] 30 webdriverSeleniumGridHub : ""
2020-01-28T14:49:34 [DEBUG] Phantom - execute: Script & Arguments
2020-01-28T14:49:34 [DEBUG] script: "/tmp/1140ef46a6d6bfd239db"
2020-01-28T14:49:34 [DEBUG] Phantom - execute: Starting normal mode
2020-01-28T14:49:34 [DEBUG] WebPage - setupFrame ""
2020-01-28T14:49:34 [DEBUG] FileSystem - _open: ":/modules/fs.js" QMap(("mode", QVariant(QString, "r")))
2020-01-28T14:49:34 [DEBUG] FileSystem - _open: ":/modules/system.js" QMap(("mode", QVariant(QString, "r")))
2020-01-28T14:49:34 [DEBUG] FileSystem - _open: ":/modules/webpage.js" QMap(("mode", QVariant(QString, "r")))
2020-01-28T14:49:34 [DEBUG] WebPage - updateLoadingProgress: 10
2020-01-28T14:49:35 [DEBUG] CookieJar - Saved "PHPSESSID=rh333emlg3vfov3u66e4lbkdkc; domain=cdb.preem.local; path=/"
2020-01-28T14:49:35 [DEBUG] WebPage - updateLoadingProgress: 30
2020-01-28T14:49:35 [DEBUG] WebPage - updateLoadingProgress: 34
2020-01-28T14:49:35 [DEBUG] WebPage - setupFrame ""
2020-01-28T14:49:35 [WARNING] QNetworkDiskCache::prepare() unable to open temporary file
2020-01-28T14:49:35 [WARNING] QNetworkDiskCache::prepare() unable to open temporary file
2020-01-28T14:49:35 [DEBUG] WebPage - updateLoadingProgress: 37
2020-01-28T14:49:35 [DEBUG] WebPage - updateLoadingProgress: 40
2020-01-28T14:49:35 [DEBUG] WebPage - updateLoadingProgress: 43
2020-01-28T14:49:35 [DEBUG] WebPage - updateLoadingProgress: 100
2020-01-28T14:49:35 [DEBUG] WebPage - evaluateJavaScript "(function() { return (function () {\n \n var styles = {};\n \n for(var property in styles) {\n document.body.style[property] = styles[property];\n }\n})(); })()"
2020-01-28T14:49:35 [DEBUG] WebPage - evaluateJavaScript result QVariant(Invalid)
2020-01-28T14:49:35 [DEBUG] WebPage - setupFrame ""
2020-01-28T14:49:35 [DEBUG] WebPage - evaluateJavaScript "(function() { return (function () {\n return document.getElementsByTagName('html')[0].innerHTML;\n })(); })()"
2020-01-28T14:49:35 [DEBUG] WebPage - evaluateJavaScript result QVariant(QString, "my html")
2020-01-28T13:49:34 [INFO] PhantomJS - Set viewport size ~ width: 1366 height: 768\n2020-01-28T14:49:35 [DEBUG] WebPage - setupFrame ""
2020-01-28T14:49:35 [DEBUG] WebPage - updateLoadingProgress: 10
2020-01-28T14:49:35 [DEBUG] WebPage - setupFrame ""
2020-01-28T14:49:35 [DEBUG] WebPage - updateLoadingProgress: 100
2020-01-28T14:49:35 [DEBUG] WebPage - setupFrame ""
2020-01-28T14:49:35 [DEBUG] FileSystem - _open: ":/modules/fs.js" QMap(("mode", QVariant(QString, "r")))
2020-01-28T14:49:35 [DEBUG] FileSystem - _open: ":/modules/system.js" QMap(("mode", QVariant(QString, "r")))
2020-01-28T14:49:35 [DEBUG] FileSystem - _open: ":/modules/webpage.js" QMap(("mode", QVariant(QString, "r")))
2020-01-28T14:49:35 [DEBUG] WebPage - updateLoadingProgress: 10
2020-01-28T14:49:35 [DEBUG] WebPage - setupFrame ""
2020-01-28T14:49:35 [DEBUG] FileSystem - _open: ":/modules/fs.js" QMap(("mode", QVariant(QString, "r")))
2020-01-28T14:49:35 [DEBUG] FileSystem - _open: ":/modules/system.js" QMap(("mode", QVariant(QString, "r")))
2020-01-28T14:49:35 [DEBUG] FileSystem - _open: ":/modules/webpage.js" QMap(("mode", QVariant(QString, "r")))
2020-01-28T14:49:35 [DEBUG] WebPage - updateLoadingProgress: 100
2020-01-28T14:49:35 [DEBUG] CookieJar - Purged (session) "PHPSESSID=rh333emlg3vfov3u66e4lbkdkc; domain=my.local; path=/"