2015-06-24 117 views
0

我正在使用節點幻像簡單https://github.com/baudehlo/node-phantom-simple。它使得dom非常簡單。我被允許使用jQuery,我正在進入數據表庫。使用jquery遍歷dom刮取數據

這裏是我開始

var nameArray = []; 

     $("tbody[role='alert'] tr").each(function(data){ 
       var json = {}; 
       json.name= $(this).children(':first-child').text(); 
       json.size= $(this).children(':nth-child(2)').text(); 
       json.caffeine= $(this).children(':nth-child(3)').text(); 
       json.mgFloz=$(this).children(':last-child').text(); 
      nameArray.push(json); 
     }); 

     // return tableData; 
      return nameArray; 

我回的所有數據從我所刮的網站代碼。裏面每個錶行的是

<td><a href="">name of drink</a></td> 
<td>info</td> 
<td>info</td> 
<td> info</td> 

我要求訪問飲料HREF格式。於是,我就針對HTML

json.url=$(this).children(':first-child').html(); 

我我的回答是

{ url: '<a href="/caffeine-content/zombie-blood-energy-potion">Zombie Blood Energy Potion</a>' } 

這接近。我想要的只是href,我會完成的。我嘗試使用attr()進行定位,但我一直得到空回來。

有沒有一個步驟我失蹤或工作?

回答

1

您已經接近,但您需要遍歷DOM一層。使用find()

json.url = $(this).children(':first-child').find('a').attr('href'); 

對於name屬性,可以使用類似的方法:

json.name = $(this).children(':first-child').find('a').text(); 
+0

巨大的感謝!我得到了href。 – Winnemucca

+0

@stevek沒問題。請注意,您在用於url屬性的示例中向我們展示的那一行與您在上面的'name'屬性中使用的行完全相同。這意味着您的'name'值將成爲第一個'td'中'a'的完整HTML代碼。您需要使用我的示例才能獲得「喝酒的名字」部分。 – jwatts1980

+0

@stevek如果回答您的問題,請不要忘記標記爲答案。謝謝! – jwatts1980