jQuery访问站点中的DOM

我试图从这个网站刮表中的各种元素,教自己使用node.js,cheerio和请求

我无法得到表格中的项目,本质上我想从表中获得“排名”,“公司”和“3年增长”。 我该怎么做呢?

基于在线教程 ,我开发了我的scraping.js脚本,如下所示:

var request = require ('request'), cheerio = require ('cheerio'); request('http://www.inc.com/inc5000/index.html', function (error, response, html) { if (!error && response.statusCode == 200) { var $ = cheerio.load(html); $('tr.ng-scope').each(function(i, element){ //problem probably lies here var a = $(this).get(0); console.log(a); }); } }); 

不过,我肯定我没有得到上述评论的权利。 有没有办法可以更好地访问表中的属性?

我注意到Xpaths是这样的

// * [@ id =“col -r”] / table / tbody / tr 2 / td 1 – rank

// * [@ id =“col -r”] / table / tbody / tr 2 / td 2 / a – 公司名称

// * [@ id =“col -r”] / table / tbody / tr 2 / td [3] – 3年增长率

试图找出如何相应地访问这些属性。

你在正确的轨道上。

$().get()方法返回元素。 在你的情况下var aTR 。 这不一定是你想要的。

你需要做的是进一步细分每个行到单个TD的。 我用$(this).find('td')做了这个。 然后,我把每个TD 1加1,并从中提取出文本,将其转换成一个对象,其中的关键字代表了表的字段。 所有这些都汇总到一个数组中,但是您可以使用基本概念来构build您认为适合使用的任何数据结构。

  request('http://www.inc.com/inc5000/index.html', function (error, response, html) { if(error || response.statusCode != 200) return; var $ = cheerio.load(html); var DATA = []; $('tr.ng-scope').each(function(){ var $tds = $(this).find('td'); DATA.push({ rank: $tds.eq(0).text(), company: $tds.eq(1).text(), growth: $tds.eq(2).text(), revenue: $tds.eq(3).text(), industry: $tds.eq(4).text() }); }); console.log(DATA); });