2017-08-01 72 views
0

我試圖使用cheerio將屬性值(「數據代碼」)推入數組中。不過,我不斷收到錯誤消息「allAs [I] .attr是不是一個函數」如何使用cheerio訪問對象內的屬性值

這裏是我到目前爲止

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

基於您的代碼,更改此:

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

...到...

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

-

*它已經有一段時間,因爲我最後使用了cheerio,所以我不確定這是應該如何,或者它是一個錯誤。

+1

這是對的!謝謝一堆。我沒有意識到attr不是一個函數。雖然它實際上告訴我。我感到放心......不好意思! – VK1