0

我是僵尸新手,只是想运行一个基本的测试。我有以下代码:

var Browser = require('zombie');

var startTime = +new Date();

Browser.visit("http://zombie.labnotes.org/", function(e, browser) {
    var duration;

    console.log("Successfully visted the page");
    console.log(browser.html());

    duration = (+(new Date())) - startTime;
    console.log("Finished in (milliseconds): " + duration);
});

出于某种原因,我在控制台中得到的只是:

成功访问页面

<html>
  <head></head>
  <body></body>
</html>
Finished in (milliseconds): 5020

这显然不是正确的标记,并且需要相当长的时间(5 秒)才能做到这一点。有任何想法吗?

更新:最终使用 request 和 jsdom 切换到更简单的模型。这是我使用的代码: var request = require('request'), jsdom = require('jsdom');

//Tell the request that we want to fetch youtube.com, send the results to a callback function
request({uri: 'http://youtube.com'}, function(err, response, body){
    var self = this;
    self.items = [];

    //Just a basic error check
    if(err && response.statusCode !== 200){console.log('Request error.');}

    //Send the body param as the HTML code we will parse in jsdom
    //also tell jsdom to attach jQuery in the scripts and loaded from jQuery.com
    jsdom.env({
        html: body,
        scripts: ['http://code.jquery.com/jquery-1.6.min.js']
    }, function(err, window){
        //Use jQuery just as in a regular HTML page
        var $ = window.jQuery;

        console.log(body);
    });
});

取自: http: //net.tutsplus.com/tutorials/javascript-ajax/how-to-scrape-web-pages-with-node-js-and-jquery/

但我仍然想知道 Zombie 出了什么问题,因为我想用它来测试其他项目。

4

2 回答 2

1

Browser 是通过 require 加载的类。您想创建一个变量,它是 Browser 的一个实例,然后使用该变量调用访问。您的代码应该是:

var Browser = require('zombie');

var startTime = +new Date();

my_browser = new Browser(); // Here's where you need to call new
my_browser.visit("http://zombie.labnotes.org/", function(e, browser) {
    var duration;

    console.log("Successfully visted the page");
    console.log(browser.html());

    duration = (+(new Date())) - startTime;
    console.log("Finished in (milliseconds): " + duration);
});
于 2012-06-25T18:15:38.033 回答
0

现在我升级到 Node.js 和 Zombie.js 的新版本似乎可以工作了。请注意,您不能将 Node 的预版本与zombie.js 一起使用(其中一个依赖项会失败)。

使用 NVM 安装最新的稳定版本(撰写本文时版本为 0.8.9)。

于 2012-09-25T22:25:37.577 回答