使用jquery遍历dom来抓取数据

时间:2015-06-24 18:41:59

标签: jquery dom web-scraping jquery-traversing

我正在使用节点幻像简单https://github.com/baudehlo/node-phantom-simple。它使得dom非常简单。我被允许使用jquery,我正在进入数据表库。

以下是我用

开头的代码
 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>

我正在寻求获取饮料。所以我试图瞄准html

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

我的回答是

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

这很接近。我想要的就是href,我将完成。我尝试使用attr()进行定位,但是我一直在返回null。

我是否缺少一个步骤或解决方法?

1 个答案:

答案 0 :(得分:1)

你很接近,但你需要再向下遍历DOM一层。使用find()

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

对于name属性,您可以使用类似的方法:

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