我正在做一个刮板 . 我正在使用Phantom JS和Node JS . Phantom JS使用 async
函数加载页面,如: var status = await page.open(url)
. 有时,由于互联网速度较慢,页面加载时间较长,一段时间后页面 status
未返回,无论是否加载,都要进行检查 . 并且 page.open()
睡眠,它根本不返回任何内容,并且所有执行都在等待 .
所以,我的基本问题是;有没有办法让这个 page.open(url)
保持活着状态,因为其余代码的执行会等到页面加载完毕 .
My Code is
const phantom = require('phantom');
ph_instance = await phantom.create();
ph_page = await ph_instance.createPage();
var status = await ph_page.open("https://www.cscscholarship.org/");
if (status == 'success') {
console.log("Page is loaded successfully !");
//do more stuff
}
1 回答
从您的评论中,似乎它可能超时(因为有时候网速较慢)...您可以通过在代码中添加
onResourceTimeout
方法来验证这一点(链接:http://phantomjs.org/api/webpage/handler/on-resource-timeout.html)它看起来像这样:
如果最终成立,您可以增加默认资源超时设置(链接:http://phantomjs.org/api/webpage/property/settings.html),如下所示:
编辑:我知道这个问题是关于幻影的,但是我还想提到另一个框架我用来刮掉项目之前叫做Puppeteer(链接:https://pptr.dev/)我个人发现他们的API 's are easier to understand and code in, and it'目前是一个维护项目,不像Phantom JS这是没有维护(他们的最后一次发布是两年前) .