[英]how to in nested object get value from parent object in javascript?
[英]Get value from nested JavaScript object in CasperJS
我試圖挖掘嵌套的javascript數組以獲取對象的第一個實例。 這是代碼:
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();
stdout的結果是這樣的:
{
"name": "Acasuso, JoséJosé Acasuso",
"birth": "1982",
"death": "–",
"country": " Argentina"
},
{
"name": "Adams, DavidDavid Adams",
"birth": "1970",
"death": "–",
"country": " South Africa"
},...
對於name
元素,我將從tr
行獲取所有內容,當您查看目標url源時,該行與2個元素匹配。 我想要的只是name元素的第二部分,其中包含“ fn”類; 例如:“ David Adams”,“JoséAcasuso”。 我在name:elements[1].smtg
應該起作用,但是我沒有運氣。
另外,我將如何打印來自elements
對象的可用對象鍵?
問題在於,第一個單元格包含兩個元素,這些元素包含具有不同順序的播放器的名稱和名字。 當采用整個單元格的textContent
時,兩個名稱表示都放在同一字符串中,但是在瀏覽器中只有其中一個可見。 如果只想訪問可見的對象,則需要顯式地對其進行爬網。
您可以編寫一個自定義函數,以從字符串中刪除重復的名稱,但是僅獲取正確元素的textContent
會更容易。
這可以在頁面上下文中輕松完成:
var tennis_data = this.evaluate(function() {
var nodes = document.querySelectorAll('table.sortable.wikitable tbody tr');
return [].map.call(nodes, function(node) {
var cells = [].map.call(node.querySelectorAll("td"), function(cell, i){
if (i === 0) {
return cell.querySelector(".fn").textContent;
} else {
return cell.textContent;
}
});
return {
name: cells[0],
birth: cells[1],
...
}
});
});
另外,我將如何打印來自
elements
對象的可用對象鍵?
elements
是一個字符串數組,因此除數組索引和數組函數外,沒有其他鍵可訪問。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.