从两个不同的 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);