casperjs evaluate函数返回无效值

时间:2017-07-16 12:03:13

标签: casperjs

我现在正在使用casperjs进行网页抓取。几乎一切都很好,但我遇到了一些麻烦。首先,我的代码如下所示。

casper.start().each(SOME_URLS, function(self, URL) {
    self.thenOpen(URL, function() {

        self.then(function() {
            var getDatas = function() {
                var title = $('SOME_SELECTOR').map(function() {
                    return $(this).text();
                 }).get();

                return {
                    title: title
                };
            }

            data = self.evaluate(getDatas);
            console.log(JSON.stringify(data));
        });

    });
}).run();

我想从网页获取一些数据到'数据'变量。有时数据非常好(在console.log上),但有时数据是空的!

为什么会这样?我错了什么?

1 个答案:

答案 0 :(得分:0)

问题是您不能多次拨打casper.start。您的循环需要在casper.start函数内或casper.then

请参阅此excellent SO answer以帮助您完成此操作。

基本上只需拨打casper.start一次,然后将您的循环放入casper.then