如何在 PhantomJS 中停止/中止/取消页面加载?
Posted
技术标签:
【中文标题】如何在 PhantomJS 中停止/中止/取消页面加载?【英文标题】:How to stop/abort/cancel a page load in PhantomJS? 【发布时间】:2016-04-13 11:22:05 【问题描述】:我使用 PhantomJS 检查特定内容的链接列表。找到这些内容后,我想取消页面加载以避免进一步的资源请求并继续下一页以提高速度。
我在 page.onResourceRequested 和 request.abort() 中过滤请求;所有不匹配但不会阻止 PhantomJS 请求直到站点完成的所有内容。
试过 page.stop(); -> 使 PhantomJS 崩溃
文档似乎缺乏,我想知道是否有一个命令可以用来做这件事。 我不能使用 page.close();因为找到内容后需要page对象。
【问题讨论】:
我不确定您是否可以取消正在进行的请求,但您可以使用request.abort()
阻止新请求。这不行吗?
我认为 request.abort();只取消正在进行的请求,而不是所有进一步的请求?
它绝对可以取消 starting 请求(甚至在任何数据上线之前)。我不知道它是否可以中止客户端正在等待服务器响应的请求。
但是我想一次取消整个页面加载,目前我取消了每个与 request.abort() 不匹配的请求;但如果我找到我的资源,则无需进一步加载该网站。
我认为您可以跟踪所有当前正在进行的资源请求,一旦您想停止页面加载,您可以设置一个全局变量来中止 all 新请求然后遍历数组并中止所有正在进行的请求。这是我的想法,但正如我所说,我不知道它是否可以工作。
【参考方案1】:
page.onResourceRequested = function(requestData, request)
var matchUrlNeeded = ((/someregexforurl\/js/g).test(requestData.url));
if (matchUrlNeeded)
doStuffWithTheUrl;
response.close();
request.abort();
page.cancel();
else
//console.log("NO MATCH : " + requestData.url); request.abort();
【讨论】:
以上是关于如何在 PhantomJS 中停止/中止/取消页面加载?的主要内容,如果未能解决你的问题,请参考以下文章