Casperjs没有提取类的价值

时间:2015-02-15 19:15:36

标签: javascript jquery casperjs

我正在使用CasperJS登录hasjob.co并从主页上抓取一些信息。

我完成了大部分工作,比如点击内容并使用jquery登录,但我仍然坚持实际提取我想要的标记值。

我使用下面的代码来做提取,它似乎提取了一些东西,但大多数是空的但是带有逗号

casper.waitForSelector(x('//*[@id="hg-networkbar-hasjob"]/a'), function(){
    casper.click(x('//*[@id="hg-networkbar-hasjob"]/a'));
});

我们的ecoho的结果看起来像这样

- ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

以下完整代码:

var links = [];



function getLinks() {
    var links = document.querySelectorAll('.annotation bottom-right');
    return Array.prototype.map.call(links, function(e) {
        return e.getAttribute('value');
    });
}

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

    clientScripts: ['/Users/doddarliu/Desktop/jquery.min.js']
});

var x = require('casper').selectXPath;

casper.options.viewportSize = {width: 1600, height: 950};

phantom.cookiesEnabled = true;

var fs = require('fs');
var cookies= JSON.stringify(phantom.cookies);

fs.write('cookies.txt', cookies, 644);

casper.userAgent('Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)');

casper.start('https://auth.hasgeek.com/login');

// casper.on("resource.error", function(msg, trace) {
//     this.echo("Error: " + msg, "ERROR");
// });


// casper.then( function() {

//  this.sendkeys('')

// });


casper.then( function() {
    casper.capture('test.png');
});


casper.waitForSelector(x('//*[@id="main-content"]/div[2]/div[2]/p/a[2]'), function(){
    casper.click(x('//*[@id="main-content"]/div[2]/div[2]/p/a[2]'));
});

casper.waitForSelector(x('//*[@id="Passwd"]'), function(){
    this.thenEvaluate(function() {
        $('#Email').val('username');
        $('#Passwd').val('pass');
    });

});

// casper.wait(5000);
casper.then( function() {
    casper.click(x('//*[@id="signIn"]'));
});


casper.waitForSelector(x('//*[@id="hg-networkbar-hasjob"]/a'), function(){
    casper.click(x('//*[@id="hg-networkbar-hasjob"]/a'));
});

casper.wait(5000);

casper.then( function() {
    casper.capture('test2.png');
});

casper.then(function() {
    // aggregate results for the 'casperjs' search

    links = casper.getElementsAttribute('.annotation.bottom-right', 'value');
});

casper.run(function() {
    // echo results in some pretty fashion
    this.echo(' - ' + links.toString()).exit();
});

示例标记:

<span class="annotation bottom-right">Fashionhaat</span>

我想提取&#34; Fashionhaat&#34;

1 个答案:

答案 0 :(得分:0)

您不想提取value属性。您想获取元素的文本。 casper.getElementsInfo()提供text属性。您可以根据需要进行过滤:

links = casper.getElementsInfo('.annotation.bottom-right').map(function(e){
    return e.text;
});