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