使用 cheerio nodejs 抓取 table 数据

Scraping table data using cheerio nodejs

我是 cheerio 的新手,想抓取特定 table 和 return 数据中的所有团队名称,如 json 例如

{
    name: "Manchester City"
}

到目前为止,我已经在下面创建了一个假设为 api return 的数据,但是我似乎无法访问任何特定元素?我不断收到以下回复 TypeError: Converting circular structure to JSON

代码

app.get('/api/standings', function(req, res, next){

    var base = "http://www.skysports.com/football/competitions/premier-league/tables";
    var age = 2015;

    request.get(`${base}`, function(err, response, body) {

            var $ = cheerio.load(body);

            //get standings
            var classes = $('standing-table__table tbody tr').each(function()   {

                var d = $(this);
                var td = d.children('td.standing-table__cell standing-table__cell--name');
                return td.eq(0).text();
            });

            res.json(classes);

    });

});

首先,您使用的 cheerio 功能不正确。您需要 .map 而不是 .eachEach 只是迭代而不返回任何基于迭代器函数中代码的有用信息,而 map 将迭代器函数返回的所有内容收集到一个数组中。所以切换到 .map,你应该得到一个字符串数组(假设你的选择器和 HTML 解析是正确的)。你将有 ["Name 1", "Name 2", "Name 3"].

然后您需要将其转换为您想要的格式,这是一个对象数组,因此您需要在此处再次调用 .map

res.json(classes.map(function (name) {return {name: name}}));