标签: casperjs

CasperJS:如何设置代理,以便Google Analytics忽略它

我使用CasperJS构建了一个simpel索引器.我希望Google Analytics忽略我的代理,因此所有请求都不会成为每天统计信息的一部分.

我应该如何设置Casper代理变量(标题)?

parsing google-analytics phantomjs casperjs

1
推荐指数
1
解决办法
755
查看次数

CasperJs在嵌套循环中单击链接

我正在尝试使用PhantomJS/CasperJS来抓取网页.我花了最近几天阅读文档,并在网上搜索,但我被困住了.

我正在抓取的页面显示了三个级别的链接 - 年,月和日.当您选择年,月和日时,#count div中会显示一个计数.此外,月份实际上是改变#imageLoad div中图像的输入(我不需要).

<div id="years">
    <span class="year">2010</span>
    <span class="year">2011</span>
    <span class="year">2012</span>
    etc...
</div>  
<div id="months">
    <input type="image" class="month" src="jan_image.png" onclick="changepic('jan')" />
    <input type="image" class="month" src="feb_image.png" onclick="changepic('feb')" />
    <input type="image" class="month" src="mar_image.png" onclick="changepic('mar')" />
    etc...
</div>
<div id="days">
    <span class="day">1</span>
    <span class="day">2</span>
    <span class="day">3</span>
    etc...
</div>

<div id="imageLoad">
</div>
<div id="count">
</div>
Run Code Online (Sandbox Code Playgroud)

我正在尝试遍历链接并记录每年,几个月和几天的组合出现的计数.如您所见,月份是改变图片的输入.

我尝试过很多东西.我想做的主要是嵌套循环,循环遍历每组链接,随时点击它们.这是代码(我使用的是jQuery):

casper.start(link);

casper.then(function() {

    pageInfo =  this.evaluate(function(){
        values = [];
        for(var y = 0; y < $('#years').length; y++){
            year= $('#years span').get(y);
            $(year).click();

            for(var m = …
Run Code Online (Sandbox Code Playgroud)

javascript loops phantomjs casperjs

1
推荐指数
1
解决办法
7237
查看次数

CasperJs和Jquery用链式选择

我正在尝试为一个网站创建一个测试用例,其中包含一个包含3个链式选择的表单.加载网页时默认填充第一个选择.如果选择了第一个选择中的任何选项,则通过ajax调用填充第二个选择.以相同的方式,当在所选的第二个选项上选择一个选项时,通过ajax调用填充第三个选项.最后,当在第三个选择上选择一个选项时,将使用我需要验证的信息填充html表.

三个互连的选择具有此结构

<select id="s1" name="s1"> 
 <option value="1">Option1</option>
 <option value="2">Option2</option>
 <option value="3">Option3</option>
</select>

 <select id="s2" name="s2"></select>

 <select id="s3" name="s3"></select>
Run Code Online (Sandbox Code Playgroud)

我确信该网站使用Jquery来进行ajax调用.有人用或知道用casperJs创建这个案例的干净方法吗?

javascript ajax jquery html-select casperjs

1
推荐指数
1
解决办法
5659
查看次数

当Casperjs在另一个页面上时,它会加载任何URL

我有两个网址X和Y.当casperjs在X页面上时,它必须调用Y页面,在得到响应之后它应该继续.

casper.start("X URL",function() {
   var casper2 = require('casper').create();

   casper2.start();
   casper2.open("Y URL", function() {
        RESPONSE
   });
   casper2.run();

}).then... >> It have to wait for response.
Run Code Online (Sandbox Code Playgroud)

我能怎么做?

phantomjs casperjs

1
推荐指数
1
解决办法
9419
查看次数

为什么简单的JavaScript在CasperJS中不起作用?

我是CasperJS的新手.怎么this.echo(this.getTitle());工作但console.log("Page Title ", document.title);不是?另外为什么我的document.querySelector不工作?有没有人有一个很好的解释?我可以在CasperJS文档中找到答案吗?

这是我的代码:

var casper = require('casper').create();
var url = 'http://www.example.com/';

 casper.start(url, function() {
     this.echo(this.getTitle()); // works
     this.echo(this.getCurrentUrl()); // works
});

casper.then(function(){
    this.echo(this.getCurrentUrl()); // works
    console.log("this is URL: ", document.URL); // doesn't work
    console.log("Page Title ", document.title); // doesn't work
    var paragraph = document.querySelectorAll('p')[0].innerHTML;
    console.log(paragraph); // doesn't work
});

casper.run();
Run Code Online (Sandbox Code Playgroud)

编辑: 我现在正在使用casper.thenEvaluate和casper.evaluate,它仍然无法正常工作.有任何想法吗?

var casper = require('casper').create();
var url = 'http://www.example.com/';

casper.start(url, function() {
    this.echo(this.getTitle()); // works
    this.echo(this.getCurrentUrl()); // works
    console.log('page loaded: '); // works …
Run Code Online (Sandbox Code Playgroud)

javascript casperjs

1
推荐指数
1
解决办法
2755
查看次数

CasperJS无法识别PhantomJS网页模块

运行最新版本的Casper 1.1.0-beta3和Phantom 1.9.7.但是,即使是最简单的casper脚本:

var casper = require('casper').create();

casper.start('http://casperjs.org/', function() {
    this.echo('foo');
});

casper.run();
Run Code Online (Sandbox Code Playgroud)

因类型错误而失败

TypeError: 'undefined' is not a function (evaluating 'require('webpage').create()')
  /usr/local/src/casperjs/modules/casper.js:2446 in createPage
  /usr/local/src/casperjs/modules/casper.js:1703 in start
  /var/sites/phantom/simple.js:5
Run Code Online (Sandbox Code Playgroud)

所需的"网页"是PhantomJS模块,在运行幻像脚本时工作正常.require方法似乎也可以正常工作(按照上面的第1行)加载自身,所以看起来PhantomJS只能被选择性识别.

Phantom安装在我的$ PATH上的/ usr/local/bin中.Casper符号链接到同一位置.O/S是Ubuntu 13.10.

关于如何说服Casper与Phantom(或反之亦然)玩得很好的任何建议都将非常感激.

phantomjs casperjs

1
推荐指数
1
解决办法
1179
查看次数

CasperJS querySelectorAll + map.call

html文件

<table id="tbl_proxy_list">
...........
 <tr>
   ......
    <td align="left">
        <time class="icon icon-check">1 min</time>
    </td>
    <td align="left">
        <div class="progress-bar" data-value="75" title="4625"></div>
    </td>
</tr>
</table>
Run Code Online (Sandbox Code Playgroud)

ip.js文件

casper.start('http://www.proxynova.com/proxy-server-list/', function() {
    var info_text = this.evaluate(function() {
        var nodes = document.querySelectorAll('table[id="tbl_proxy_list"] tr');
        return [].map.call(nodes, function(node) { 
            //return node.innerText;
            return node;
        });
    });

    var tr_data = info_text.map(function(str) {
        var elements = str;
        var data = {
            ip        : elements,
            port      : elements[1],
            lastcheck : elements[2],
            speed     : elements[3], // <== value is 75..
        };
        return data;
    }); …
Run Code Online (Sandbox Code Playgroud)

javascript selectors-api casperjs

1
推荐指数
1
解决办法
4767
查看次数

从evaluate方法调用时不显示消息

我是casperjs的新手并且玩弄它,但是我无法使用它的evaluate()功能.

这是我的榜样

var casper = require('casper').create();

casper.echo('started...');

casper.start('http://www.google.de/');

casper.then(function() {
    this.echo(this.getTitle());
});

casper.then(function() {
    this.evaluate(function() {
        this.echo('test');
    });
});

casper.run();
Run Code Online (Sandbox Code Playgroud)

我正在执行它 casperjs sample.js

之后started...,Google控制台输出中没有任何反应.不执行evaluate方法中给出的闭包函数.

我甚至没有得到控制台的进一步信息--verbose.

我究竟做错了什么?

javascript casperjs

1
推荐指数
1
解决办法
1441
查看次数

PhantomJS使用QtWebKit还是Blink?

PhantomJS(CasperJS)是否使用WebKit或Chromium作为默认浏览器驱动程序?如果是WebKit,是直接WebKit还是qt或gtk?

blink qtwebkit chromium phantomjs casperjs

1
推荐指数
1
解决办法
1767
查看次数

等待CasperJS中选择的<select>字段的AJAX响应

我想使用CasperJS来抓取这个网站:http://www.agoda.com/hotel-des-arts-saigon-mgallery-collection/hotel/ho-chi-minh-city-vn.html?checkin = 2015- 11-14&洛斯= 2&成人= 2&儿童的= 0&客房= 1

我想改变CasperJS的货币期权.但是,货币期权包含在内<select></select>未嵌入表单的标签中.当我读表时,它会显示旧货币的价格.当货币发生变化时,价格会通过AJAX加载.

我怎么能用CasperJS做什么?

这是我的代码:

var casper = require("casper").create({
    verbose: true,
    logLevel: 'error',
    pageSettings: {
        loadImages: false,
    }
});

   var utils = require('utils');

    var url = 'http://www.agoda.com/hotel-des-arts-saigon-mgallery-collection/hotel/ho-chi-minh-city-vn.html?checkin=2015-11-14&los=4&adults=2&childs=0&rooms=1';

    var names = [];
    var prices = [];
    var currency = [];


    function getName() {
        var rows = document.querySelectorAll('table#room-grid-table tbody tr td:first-child .info-container .room-name span');
        return Array.prototype.map.call(rows, function(e) {
            return e.innerHTML;
        });
    }

    function getPrice() {
        var price = document.querySelectorAll('table#room-grid-table tbody tr td:nth-child(3) …
Run Code Online (Sandbox Code Playgroud)

javascript ajax html-select web-scraping casperjs

1
推荐指数
1
解决办法
3247
查看次数