使用cheerio nodejs刮擦表数据

时间:2015-11-07 12:04:51

标签: javascript json node.js cheerio

我是cheerio的新手,想要抓住特定表中的所有团队名称并将数据作为json返回,例如

{
    name: "Manchester City"
}

到目前为止我在下面创建了一个假设是api返回数据,但是我似乎无法访问任何特定的元素?我一直得到以下回复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);

    });

});

1 个答案:

答案 0 :(得分:1)

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

然后你需要将它转换为你想要的格式,这是一个对象数组,所以你需要在这里再次调用.map

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