从两个不同的 class 选择器创建 JSON?
Create JSON from two different class selectors?
my sample code below:
var request = require('request');
var cheerio = require('cheerio');
url = 'example.com';
request(url, function(error, response, html){
if(!error){
var $ = cheerio.load(html);
var json = { name : "", number : ""};
let name = [];
$('.name-cell').map(function(i, elm) {
name[i] = $(this).text().trim();
json.name = name;
})
let rank = [];
$('.number-cell').map(function(i, elm) {
number[i] = $(this).text().trim();
json.number = number;
})
var obj = name.concat(number);
console.log(obj);
}
})
output:
{ "name": [
"Name 1",
"Name n"
],
"number": [
"Number 1",
"Number n"
] }
desired output (or anything similar):
{ ["name": "Name 1", "number": "Number 1"] }
Any suggestions or guidance is much appreciated - as I have not been able to scrape data from two different class selectors.
您的 "desired output" 无效 JavaScript。看来你想要的是一个对象数组:
[ // An array!
{ "name": "Name 1", "number": "Number 1" }, // An object!
...
]
以下代码使用 .eq
和迭代索引来选择相应的 '.number-cell'
元素。 obj
应该是一个对象数组。
var $ = cheerio.load(html);
var names = $('.name-cell'), cells = $('.number-cell');
var obj = names.map(function(i) {
return {
name: $(this).text().trim(),
number: cells.eq(i).text().trim()
}
});
console.log(obj);
my sample code below:
var request = require('request');
var cheerio = require('cheerio');
url = 'example.com';
request(url, function(error, response, html){
if(!error){
var $ = cheerio.load(html);
var json = { name : "", number : ""};
let name = [];
$('.name-cell').map(function(i, elm) {
name[i] = $(this).text().trim();
json.name = name;
})
let rank = [];
$('.number-cell').map(function(i, elm) {
number[i] = $(this).text().trim();
json.number = number;
})
var obj = name.concat(number);
console.log(obj);
}
})
output:
{ "name": [
"Name 1",
"Name n"
],
"number": [
"Number 1",
"Number n"
] }
desired output (or anything similar):
{ ["name": "Name 1", "number": "Number 1"] }
Any suggestions or guidance is much appreciated - as I have not been able to scrape data from two different class selectors.
您的 "desired output" 无效 JavaScript。看来你想要的是一个对象数组:
[ // An array!
{ "name": "Name 1", "number": "Number 1" }, // An object!
...
]
以下代码使用 .eq
和迭代索引来选择相应的 '.number-cell'
元素。 obj
应该是一个对象数组。
var $ = cheerio.load(html);
var names = $('.name-cell'), cells = $('.number-cell');
var obj = names.map(function(i) {
return {
name: $(this).text().trim(),
number: cells.eq(i).text().trim()
}
});
console.log(obj);