【发布时间】:2015-01-17 10:59:28
【问题描述】:
我有一个 PHP 脚本,它可以抓取网页并使用 PhantomJS 将抓取的数据插入到数据库中。
目前,在 PhantomJS 中的资源超时时,我取消了页面的整个请求并通过 PHP 再次请求整个页面。
这是我的代码:
page.settings.resourceTimeout = 5000; // 5 seconds
page.onResourceTimeout = function(e) {
console.log(e.errorCode); // it'll probably be 408
console.log(e.errorString); // it'll probably be 'Network timeout on resource'
console.log(e.url); // the url whose request timed out
phantom.exit(1);
};
我只想向超时的资源重新发送请求,而不是重新请求整个页面。 这可能吗?
【问题讨论】:
-
我最近一直在使用Spiderling 从 PHP 驱动 PhantomJS。我想知道它是否有一些东西可以确定依赖资源是否成功加载,以及它们没有在哪里重新加载它们(我相信有一个 JS 加载器)。然而,正如 Artjom 所说,由于后续脚本可能会因初始失败而失败,因此您可能必须在失败之后(包括)重新加载所有脚本。
标签: php timeout web-scraping phantomjs