如何在PhantomJS中关注document.location.reload?

时间:2016-10-23 07:18:26

标签: javascript node.js web-scraping phantomjs web-crawler

我已经在PhantomJS中加载了一个页面(在NodeJS中使用它),并且该页面上的JS函数doRedirect()包含

...
document.cookie = "key=" + assignedKey
document.location.reload(true)

我像这样从PhantomJS运行doRedirect()

page.evaluate(function() {
  return doRedirect()
}).then(function(result) {
  // result is null here
})

我希望PhantomJS关注document.location.reload(true)并返回该新页面的内容。怎么办呢?

1 个答案:

答案 0 :(得分:1)

document.location.reload()无法在任何地方导航,它会重新加载页面。这就像点击浏览器的刷新按钮一样。这一切都发生在前端,而不是发生300 Redirect的服务器。

只需调用该功能,等待PhantomJS完成加载页面,然后向其询问内容。

您可以使用page.onLoadFinished事件等待PhantomJS完成加载。此外,您可能需要在加载后使用setTimeout()等待一些额外的时间让页面内容异步加载。

var webPage = require('webpage');
var page = webPage.create();

page.onLoadFinished = function(status) {
  // page has loaded, but wait extra time for async content
  setTimeout(function() {
    // do your work here
  }, 2000); // milliseconds, 2 seconds
};