2014-09-19 5 views
1

내 웹 페이지에서 간단한 긁힘을 실행하려고 시도하고 있지만 실행중인 문제는 긁적 거리기 도구로 HTML 요소를 올바르게 선택하지 못하는 것입니다. 나는 내 <li>에서 올바르게 속성을 잡는 중이라고 생각했지만 각 객체 속성에 대해 undefined 값을 얻고 있습니다.노드 Jquery 긁기 문제

나는 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, 답장을 보내 주셔서 감사합니다.하지만 내 제안 사항을 모두 시도한 후에도 여전히 내 개체 속성의 값으로 정의되지 않습니다. 그 이유에 대한 어떤 생각? 올바른 데이터를 얻지 못하고 있습니까? – cphill