【问题标题】:How to open a CasperJS/PhantomJS file in a browser like Google Chrome?如何在 Google Chrome 等浏览器中打开 CasperJS/PhantomJS 文件?
【发布时间】:2018-07-12 10:38:22
【问题描述】:

我是使用无头浏览器 (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 文件,以便可以通过网络浏览器打开:

<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>

当我在谷歌浏览器中打开这个 HTML 文件时,我得到了这个错误:

有什么想法吗?

编辑:我终于能够使用 PHP 在浏览器上运行 CasperJS。这是PHP代码,如果以后有人需要,希望对您有所帮助:

<?php
    $text = exec("casperjs C:/Users/User/Desktop/CasperFile.js");
    echo $text;
?>

字体:Cannot pass CasperJS result back to PHP

【问题讨论】:

    标签: browser web-scraping phantomjs casperjs headless-browser


    【解决方案1】:

    您不能直接从 Google Chrome 或 Firefox 等浏览器运行 CasperJS。

    如果这是可能的,它将允许违反same-origin policy

    要绕过任何限制,您应该在服务器端进行网络抓取。

    由于根据您的comment,您使用的是 PHP,您可以为 CasperJS 使用 PHP 包装器:

    或者,您可以使用exec 命令:

    $result = exec('PHANTOMJS_EXECUTABLE=/usr/local/bin/phantomjs /usr/local/bin/casperjs script.js');
    echo $result;
    

    【讨论】:

    • 谢谢@Grant Miller!这听起来好多了,因为我不会每次需要抓取数据时都在命令行上运行它。所以,我已经安装了“php-casperj”并粘贴了示例中的代码,但是当我尝试运行它时,我收到了这条消息:“致命错误:C:\ 中找不到类'Browser\Casper' xampp\htdocs\web scraping\web scraping.php on line 3",你知道怎么解决吗?
    • 顺便说一句,我也在 PHP 文件中尝试了 exec 命令,但是当我在 Chrome 中打开它时,我什么也没看到(它没有打印结果)。我更改了“PhantomJS_Executable”的路径,因为我的位于 C:\PhantomJs\bin:i.imgur.com/UVwvAxa.png,所以我写了这个:i.imgur.com/7cT2us6.png 最后,test1.js 有这个:i.imgur.com/GS1zGtH.png(这是我的一个例子来自 phatom 官方网站)。那么,怎么了?
    • 我终于可以在 PHP 上运行 CasperJS 了!您的执行代码对我不起作用@Grant Miller,可能是因为我使用的是 Windows 而不是 Linux?无论如何,我刚刚找到了另一个代码来做这件事,所以我会编辑我的第一篇文章,我会把它放在那里给有同样问题的人。再次感谢!
    【解决方案2】:

    很遗憾,它不起作用。您要做的类似于使用视频播放器打开 MS Word 文件。

    脚本不是 HTML 页面,它是一个程序,Google Chrome 不是 CasperJS/PhantomJS,因此不会运行为它们设计的脚本。

    如果您想在浏览器中进行抓取,最好的办法是创建a browser extension

    【讨论】:

    • 谢谢!但遗憾的是,我不能使用浏览器扩展,因为我必须使用 HTML/JavaScript 或 PHP 构建网站,并且我需要使用编程语言从某些网站获取数据。
    • 嗯,PHP 和 PhantomJS 都在服务器上工作,所以你仍然可以这样做。但是为什么不从一些 Scraping 101 书籍或文章开始呢?
    • 好吧,我必须从一些酒店网站上获取价格,而不是一本书或一篇文章。我已经尝试通过对 PHP 使用“简单 HTML DOM”来抓取它们,并且它似乎可以很好地获取一些数据,但是如果我需要获取不在主 HTML 中的数据,它就不起作用(因为这些网站倾向于进行 AJAX 调用)。所以,这就是我尝试使用无头浏览器来成功抓取动态网站的原因。是的,PHP 和 PhantomJS 在服务器上工作,但 Phantom 是基于 JavaScript 的,所以它可能与 PHP 不兼容。
    猜你喜欢
    • 2022-08-04
    • 2021-09-29
    • 2018-10-29
    • 2021-05-22
    • 2013-01-14
    • 2021-03-15
    • 1970-01-01
    • 2015-10-14
    相关资源
    最近更新 更多