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 を使用して、より単純なモデルに切り替えることになりました。私が使用したコードは次のとおりです。

//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 のインスタンスである変数を作成し、その変数を使用して visit を呼び出します。コードは次のようになります。

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 に答える