2014-09-19 44 views
1

我想在我的網頁上運行一個簡單的刮,但我遇到的問題是,我似乎無法正確使用我的刮板選擇HTML元素。我認爲我正在從我的<li>正確抓取屬性,但是我得到的每個對象屬性的undefined值。Node Jquery Scraping問題

我期待抓住data-name,data-addressdata-url值。

scrape.js

var request = require('request'); 
var cheerio = require('cheerio'); 

request('http://personalSite.com', function (error, response, html) { 
    if (!error && response.statusCode == 200) { 
    var $ = cheerio.load(html); 

    $('li').each(function(i, element){ 

     var li = $(this).contents(); 


     var name = li.attr('name'); 
     var address = li.attr('address'); 
     var url = li.attr('url'); 


     var metadata = { 
      name : name, 
      address : address, 
      url : url 
     }; 
     console.log(metadata); 
    }); 
    } 
}); 

HTML:

<li id="v1065" data-name="Jerry's Food" data-address="5120 West 43rd Street" data-url="http://www.testsite1.com/" data-category="1"><a href="#" class="list-digital"> 
            <span class="venue-name">Jerry's Food</span><br /> 
            <span class="venue-address">5120 West 43rd Street</span> 

            </a> 
           </li>       
           <li id="v249" data-name="Accel Partners" data-address="13482 Seventh Avenue" data-url="http://www.testsite2.com" data-category="3"><a href="#" class="list-digital"> 
            <span class="venue-name">Mike's Pizza</span><br /> 
            <span class="venue-address">13482 Seventh Avenue</span>        
            </a> 
           </li>       

回答

0

隨着.attr()方法,你應該使用完整的屬性名

var name = li.attr('data-name'); 
var address = li.attr('data-address'); 
var url = li.attr('data-url'); 

或者你可以使用

var name = li.data('name'); 
var address = li.data('address'); 
var url = li.data('url'); 
+0

嘿@zavg,謝謝你的回答,但在嘗試了你的兩條建議之後,我仍然沒有把undefined作爲我的對象屬性的值。任何想法,爲什麼這可能是?我沒有抓住正確的數據嗎? – cphill 2014-09-19 19:03:43