我是使用无头浏览器(CasperJS / PhantomJS)的新手,我正在使用它进行网页抓取,因此我可以抓取AJAX网站。
但我有一个问题:
我需要在谷歌浏览器这样的常用浏览器中打开该文件,所以有人知道是否有办法做到这一点?
我已将此代码放在文件“test.js”中:
var casper = require('casper').create();
casper.start('http://casperjs.org/', function() {
this.echo(this.getTitle());
});
casper.thenOpen('http://phantomjs.org', function() {
this.echo("a" + this.getTitle());
});
如果我使用命令行(CMD)运行此文件,它可以工作:
但我也尝试将其更改为HTML文件,以便可以通过Web浏览器打开:
<html>
<head>
<title></title>
</head>
<body>
<script>
var casper = require('casper').create();
casper.start('http://casperjs.org/', function() {
this.echo(this.getTitle());
});
casper.thenOpen('http://phantomjs.org', function() {
this.echo("a" + this.getTitle());
});
casper.run();
</script>
</body>
当我在Google Chrome中打开此HTML文件时,出现此错误:
有任何想法吗?
编辑:我终于可以使用PHP在浏览器上运行CasperJS。这是PHP代码,如果有人在将来需要它,我希望它会帮助你:
<?php
$text = exec("casperjs C:/Users/User/Desktop/CasperFile.js");
echo $text;
?>
您无法直接从Google Chrome或Firefox等浏览器运行CasperJS。
如果这是可能的话,它将允许违反same-origin policy。
要绕过任何限制,您应该在服务器端进行网络抓取。
因为根据你的comment,你使用的是PHP,你可以使用PHP包装器来实现CasperJS:
或者,您可以使用exec
命令:
$result = exec('PHANTOMJS_EXECUTABLE=/usr/local/bin/phantomjs /usr/local/bin/casperjs script.js');
echo $result;
不幸的是它不起作用。您要做的是类似于使用视频播放器打开MS Word文件。
脚本不是HTML页面,它是一个程序,而Google Chrome不是CasperJS / PhantomJS,因此不会运行为它们设计的脚本。
如果你想在浏览器中进行抓取,最好的办法是创建a browser extension。