我使用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();
});
我不知道这里出了什么问题。
答案 0 :(得分:1)
它没有向你展示任何东西,因为你太早退出了。进行回调的所有函数(ViewObject.java:
public class ViewObject extends FreemoModel{
private FreemoStatus status;
private String message;
private Object result;
}
除外)都是异步的。
您要求通过调用evaluate()
在页面中包含jQuery,您立即退出PhantomJS。你需要在完成后退出:
page.includeJs()