gpt4 book ai didi

javascript - 当找不到特定请求时如何退出 PhantomJS?

转载 作者:行者123 更新时间:2023-12-03 09:00:11 25 4
gpt4 key购买 nike

问题是,有些网站包含对 test.com/test.aspx 的请求,有些则不包含。

如果请求存在,它应该打印 JSON 并退出。如果请求不存在,它也应该退出 - 目前,在这种情况下它保持打开状态。

另外,我怎样才能让代码变得更好?如果可能的话,也许更快?

我的JS代码:

var Url = "http://www.test.de";
var params = new Array();
var webPage = require('webpage');
var page = webPage.create();
var targetJSON = {};
page.open(Url);
page.onResourceRequested = function(requestData, networkRequest) {
var match = requestData.url.match(/test.com\/test.aspx/g);
if (match != null) {
var targetString = decodeURI(JSON.stringify(requestData.url));
var klammerauf = targetString.indexOf("{");
var jsonobjekt = targetString.substr(klammerauf, (targetString.indexOf("}") - klammerauf) + 1);
targetJSON = (decodeURIComponent(jsonobjekt));
console.log(targetJSON);
phantom.exit();
}

};

我尝试添加

} else {
phantom.exit();
}

} if (match == null) {
phantom.exit();
}

但没有什么能解决我的问题。

最佳答案

如果你想检查某个东西是否不存在,那么你需要检查所有的东西,看看它们是否不存在或first-order logic : ¬∃x P(x) ↔ ∀x ¬P(x) .

您首先需要查看所有请求,看看是否有您想要的请求。例如这样:

var found = false;
page.onResourceRequested = function(requestData, networkRequest) {
var match = requestData.url.match(/test.com\/test.aspx/g);
if (match != null) {
var targetString = decodeURI(JSON.stringify(requestData.url));
var klammerauf = targetString.indexOf("{");
var jsonobjekt = targetString.substr(klammerauf, (targetString.indexOf("}") - klammerauf) + 1);
targetJSON = (decodeURIComponent(jsonobjekt));
console.log(targetJSON);
found = true;
phantom.exit();
}
};
page.open(Url, function(){
setTimeout(function(){
console.log("found: " + found); // will always print "false"
phantom.exit();
}, 1000);
});

我用一个全局变量解决了这个问题,该变量表示是否找到了请求。如果不是,那么您可以退出 PhantomJS。如果等到页面加载完毕,并额外等待一段时间,以防有 Ajax 请求。

关于javascript - 当找不到特定请求时如何退出 PhantomJS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32327783/

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