Zombie.js检查动态更新

时间:2015-03-27 16:57:28

标签: node.js zombie.js

我正在尝试从不断变化的网页中抓取内容。我已经能够使用PhantomJS实现这一目标,但却想要更轻量级的解决方案。以下代码在第一次打印到控制台时获取正确的值。但是,在以下迭代中,将打印相同的值。有什么想法吗?

var Browser = require("zombie");
var assert = require("assert");

// Load the page from localhost
browser = new Browser()
browser.visit("http://www.timeanddate.com/worldclock/usa/los-angeles", function () { 

  setInterval(function(){
    console.log(browser.text('#ct'));
  },10000);
});

请注意,上面的示例纯粹是一个示例。我知道这将是在洛杉矶度过最低效的方式。

1 个答案:

答案 0 :(得分:0)

调用browser.visit()后,browser会存储响应,但除非您多次调用,否则响应不会更改。亲眼看看:

browser.visit("http://www.timeanddate.com/worldclock/usa/los-angeles", function () { 
  console.log(browser.html()); // will print the HTML to stdout
});

所以你可能想要的是多次调用browser.visit(),也许在setInterval()内(虽然可能有更强大的解决方案)。

我重新编写了你的​​代码:

var Browser = require("zombie");
var assert = require("assert");

var browser = new Browser();

setInterval(function () {
  browser.visit("http://www.timeanddate.com/worldclock/usa/los-angeles", function () {
    console.log(browser.text('#ct'));
  });
}, 10000);