使用cheerio nodejs擦除表数据

Scraping table data using cheerio nodejs

本文关键字:数据 擦除 nodejs cheerio 使用      更新时间:2023-09-26

我是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);
    });
});

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

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

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