Casperjs 未提取 class 的值

Casperjs not extracting value of the class

我正在使用 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>

我想提取 "Fashionhaat"

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

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