PhantomJS没有返回任何结果

时间:2015-08-16 21:06:35

标签: javascript phantomjs

我使用PhantomJS从网页上抓取数据。 PhantomJS没有从evaluate方法返回任何内容。该脚本只运行几秒钟然后退出。

我已经检查过PhantomJS是否正在连接到该页面 - 它是。 PhantomJS也能够获取页面标题。我已经仔细检查了我正在寻找的课程,是的 - 我正确拼写它。

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

page.open('http://www.maccosmetics.com/product/13854/36182/Products/Makeup/Lips/Lipstick/Giambattista-Valli-Lipstick', function(status) {
    page.includeJs("http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js", function() {
        waitFor(function()  {
            return page.evaluate(function() {
                $('.product__price').is(':visible');
            });
        }, function(){
            search = page.evaluate(function() {
                return  $('.product__price').text();
            });
            console.log(search)
        });
    });
    phantom.exit();
});

我不知道这里出了什么问题。

1 个答案:

答案 0 :(得分:1)

它没有向你展示任何东西,因为你太早退出了。进行回调的所有函数(ViewObject.java: public class ViewObject extends FreemoModel{ private FreemoStatus status; private String message; private Object result; } 除外)都是异步的。

您要求通过调用evaluate()在页面中包含jQuery,您立即退出PhantomJS。你需要在完成后退出:

page.includeJs()