gpt4 book ai didi

javascript - phantomJS如何从页面加载后开始的JS脚本获取答案

转载 作者:行者123 更新时间:2023-11-28 01:23:19 25 4
gpt4 key购买 nike

我正在寻找该问题的解决方案。

网站在页面加载后加载了几个JS脚本,它运行良好,页面从脚本获取响应并将其呈现到网站页面。

但是脚本返回 JSON,我想以 JSON 格式获取此响应,而不是从生成的页面中获取。使用脚本的答案比使用选择器和循环从页面获取信息更快。

我尝试使用 page.onResourceReceived() 但它只能为我提供分析信息、文件名库存和响应大小;

我怎样才能得到这个回复的正文?

最佳答案

如果我正确理解了您的要求,您可以尝试在网页端使用 window.callPhantom 将数据作为对象传递,并通过 PhantomJS 范围内的 page.onCallback 事件监听器接收数据。

http://phantomjs.org/api/webpage/handler/on-callback.html

摘录:

当网页上有 JavaScript window.callPhantom 调用时,会调用此回调。传递给回调的唯一参数是数据对象。

注意:window.callPhantom 仍然是一个实验性 API。在不久的将来,它可能会被基于消息的解决方案所取代,而该解决方案仍将提供相同的功能。

虽然这种控制反转有很多可能的用例,但到目前为止主要的用例是防止 PhantomJS 脚本不断轮询网页上的某些变量。

示例:网页(客户端)

if (typeof window.callPhantom === 'function') {
window.callPhantom({ hello: 'world' });
}

PhantomJS(服务器端)

page.onCallback = function(data) {
console.log('CALLBACK: ' + JSON.stringify(data)); // Prints 'CALLBACK: { "hello": "world" }'
};

此外,请注意,WebPage#onCallback 处理程序也可以返回一个数据对象,该数据对象也将作为原始 window.callPhantom 调用的结果被带回。

示例:

网页(客户端)

if (typeof window.callPhantom === 'function') {
var status = window.callPhantom({ secret: 'ghostly' });
alert(status); // Will either print 'Accepted.' or 'DENIED!'
}

PhantomJS(服务器端)

page.onCallback = function(data) {
if (data && data.secret && data.secret === 'ghostly') {
return 'Accepted.';
}
return 'DENIED!';
};

关于javascript - phantomJS如何从页面加载后开始的JS脚本获取答案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23028813/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com