如何使用cheerio访问对象内的属性值

时间:2017-08-01 10:51:42

标签: node.js web-scraping cheerio

我正在尝试使用cheerio将属性(“data-code”)的值推送到数组中。但是,我不断收到错误消息“allAs [i] .attr不是函数”

这是我到目前为止所拥有的

const express = require('express');
const request = require('request');
const cheerio = require('cheerio');
const app = express();

app.get('/scrape', (req, res) => {
    const url = 'http://store.emart.com/branch/list.do?id=1702';    

    request(url, (err, response, body) => {
        if(!err) {
            var idList = [];
            console.log(typeof(idList));
            var $ = cheerio.load(body);
            var allAs = $("a").filter("[data-code]");
            console.log(allAs[0].val);
            for(var i = 0; i < allAs.length; i++){
                //console.log(allAs[i]);
               idList.push(allAs[i].attr("[data-code]"));
            }
            console.log();

            res.send(body);
        } else {
            console.log("problems yo");
        }
    });
});


app.listen(3000, () => {
    console.log("Server is up and running!!!");
});

应该有330个结果被推入idList。

1 个答案:

答案 0 :(得分:1)

根据您的代码,更改此内容:

idList.push(allAs[i].attr("[data-code]"));

...到......

idList.push(allAs[i].attribs['data-code']);

-

*自从我上次使用cheerio以来已经有一段时间了,所以我不确定这是不是它应该是怎么回事,或者它是一个错误。