0

我有一个小问题,我是 casperjs 的新手,所以我想知道 casper 是否可以与我当前的 php 脚本一起工作,该脚本循环遍历我的数据库查询结果的结果。

<?php
$urls = query url database

foreach($url as $url){
   then I send an execute command to casperjs.
}
?>

然后这里是我想要发送循环 url 的 js 代码。

var casper = require('casper').create({
viewportSize: {
    width: 1024,
    height: 768
}
});

casper.start(**URL from PHP HERE**, function() {
this.capture('shy.png', {
    top: 0,
    left: 0,
    width: 1024,
    height: 1000
 });
});


casper.run();

我的问题是如何将带有 $url 作为 url 源值的命令发送到 casperjs?

我正在尝试为提供的每个 url 制作屏幕截图。

4

2 回答 2

0

您可以使用 php 脚本在标签中回显 url。

<?php
$urls = do_query();
foreach($urls as $url){
    echo "<a href=\"$url\"">$url</a><br />;
}
?>

用你的 casperjs 注入 jQuery。然后在所有链接上使用带有 jQ​​uery 选择器的 casperjs evaluate() 再次返回所有链接。

var links = this.evaluate( function() {

    var $ = jQuery; // map jQuery to $

    var links = [];

    $('a').each( function() {

        links.concat($(this).attr('href'));

    });

    return links;

});

然后遍历链接并捕获它们。

祝你好运!

于 2013-02-28T20:10:36.740 回答
0

您可以通过 shell 命令将 URL 传递给 casperjs 进程:

CasperJS CLI 命令

例如 casperjs --crawlurl= http://example.com

然后,您可以使用类似 shell_exec 的方式从 PHP 调用 casperjs 进程:

shell_exec

请注意,对于普通的服务器提供商,他们可能会阻止使用 shell_exec。

于 2013-02-19T02:40:05.033 回答