Я пытаюсь вставить вложенный массив javascript, чтобы захватить первый экземпляр объекта. Вот код:Получить значение из вложенного объекта JavaScript в CasperJS
var utils = require('utils');
var casper = require('casper').create();
casper.start('http://en.wikipedia.org/wiki/List_of_male_tennis_players', function() {
this.echo(this.getTitle());
// Get info on all elements matching this CSS selector
var tennis_info_text = this.evaluate(function() {
var nodes = document.querySelectorAll('table.sortable.wikitable tbody tr');
return [].map.call(nodes, function(node) { // Alternatively: return Array.prototype.map.call(...
return node.textContent;
});
});
// Split the array into an array of object literals
var tennis_data = tennis_info_text.map(function(str) {
var elements = str.split("\n");
var data = {
name : elements[1],
birth : elements[2],
death : elements[3],
country : elements[4]
};
return data;
});
// Dump the tennis_names array to screen
utils.dump(tennis_data.slice(1,5));
});
casper.run();
Результат стандартного вывода заключается в следующем:
{
"name": "Acasuso, JoséJosé Acasuso",
"birth": "1982",
"death": "–",
"country": " Argentina"
},
{
"name": "Adams, DavidDavid Adams",
"birth": "1970",
"death": "–",
"country": " South Africa"
},...
Для name
элемента, я получаю все от tr
строки, которая соответствует 2 элементу, когда вы смотрите на цели источник url. Я хочу только вторую часть элемента name с классом «fn»; например: «Дэвид Адамс», «Хосе Акасузо». Я думаю, что что-то вроде name:elements[1].smtg
должно работать, но мне не повезло.
Кроме того, как бы напечатать доступные ключи объектов с объекта elements
?
В коде отсутствует объект 'element'. –
Я имел в виду * elements * object .. – dharkko
'elements' - это массив строк, поэтому нет ключей, к которым вы можете получить доступ, кроме индексов массивов и функций массива. Я немного объяснил свой вопрос описанием проблемы. –