我从http://phantomjs.org/page-automation.html举了一个例子,因为我需要在抓取之前按下JS网站上的按钮。
var page = require('webpage').create();
page.open('http://www.sample.com', function() {
page.includeJs("http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js", function() {
page.evaluate(function() {
$("button").click();
});
phantom.exit()
});
});
但是当我运行此代码时,我收到此错误:
work7.rb:5:`$('不允许作为全局变量名称 work7.rb:5:语法错误,意外的输入结束$(“按钮”)。click();
PhantomJS是否需要正确使用?
var page = require('webpage').create();
page.open('http://example.com', function(status) {
});
它不起作用!
/usr/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in require':无法加载此类文件 - 网页(LoadError)
来自/usr/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in 需要'
来自work7.rb:3:在'
我做错了什么?
答案 0 :(得分:0)
这个问题确实令人困惑......
您的代码是用JavaScript编写的,而不是用Ruby编写的!要执行JavaScript代码,您需要 JavaScript运行时环境。现在最受欢迎的是(图形和无头)Web浏览器,Node.js和Electron。
PhantomJS 是一个网络浏览器。它没有图形界面,但这是一个真实的,成熟的Web浏览器,您可以使用脚本自动执行。要运行用JavaScript编写的常规PhantomJS脚本,如果您使用phantomjs
在系统上全局安装phantomjs-prebuilt,则必须使用PATH
中应该提供的npm
命令
为了帮助您入门,您将在下面找到一个工作示例(没有jQuery),其中PhantomJS单击网页的按钮,该按钮触发包含以下消息的JS警报:"它有效!"。此消息由onAlert
事件处理程序捕获并打印到控制台。
HTML ( index.html )
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>PhantomJS</title>
</head>
<body>
<button>OK</button>
<script>
(function () {
var button = document.querySelector('button');
button.addEventListener('click', function () {
alert('It works!');
}, false);
})();
</script>
</body>
</html>
JavaScript ( script.js )
var page = require('webpage').create();
page.onAlert = function (msg) {
console.log(msg);
};
page.open('index.html', function () {
page.evaluate(function () {
document.querySelector('button').click();
});
phantom.exit()
});
<强>命令强>
phantomjs script.js