我正在尝试使用Phantom + JQuery的一个非常简单的示例:我想在控制台中显示 stackoverflow.com 页面的“热门问题”标签。这是我的testphantom.js脚本:
var page = require('webpage').create();
page.open('http://stackoverflow.com/', function() {
page.includeJs("http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js", function() {
page.evaluate(function() {
var txt = $('#h-top-questions').text();
console.log('TEXT: ' + txt);
});
phantom.exit();
});
});
但它没有显示任何内容:
>phantomjs testphantom.js
>
这里有什么问题?
答案 0 :(得分:2)
您正在浏览器上下文中记录文本,但实际上您想在phantomjs上下文中调用console.log
:
var page = require('webpage').create();
page.open('http://stackoverflow.com/', function() {
page.includeJs("http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js", function() {
// Get the text value
var txt = page.evaluate(function() {
// Browser context
return jQuery('#h-top-questions').text();
});
// Log the text - phantomJS context
console.log('TEXT: ' + txt);
phantom.exit();
});
});
答案 1 :(得分:0)
您的代码不起作用,因为您尝试在幻像对象的网页上记录消息,而网页无法访问幻像对象,让我们举个例子: 您是浏览器的开发者,并且在您的浏览器上现在正在运行某些网页,想象如果运行网页的用户可以访问您的浏览器对象会发生什么。他现在可以控制每件事。这就是为什么网页和幻像对象的执行是沙盒化的。 注意:phantomjs是一个无头浏览器。