jQuery访问站点中的DOM
jQuery to access DOM in a site
我正试图从这个网站上抓取表中的各种元素,以自学使用node.js、cheerio和request 进行抓取
我很难在表中列出项目,基本上我想从表中获得"排名"、"公司"answers"3年增长"。我该怎么做?
基于一个在线教程,我开发了我的scratch.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);
});
}
});
然而,我确信我没有得到以上评论的正确性。有没有一种方法可以更好地访问表中的属性?
我注意到Xpath就是这样的
//*[@id="col-r"]/table/tbody/tr2/td1——排列
//*[@id="col-r"]/table/tbody/tr2/td2/a——公司名称
//*[@id="col-r"]/table/tbody/tr2/td[3]——3年增长率
只是想弄清楚如何相应地访问这些属性。。
你走在了正确的轨道上。
$().get()
方法返回元素。在您的情况下,var a
就是TR
。这不一定是你想要的。
您需要做的是将每一行进一步细分为单独的TD
。我用$(this).find('td')
做了这个。然后,我获取每个TD
1乘1,并从中提取文本,将其转换为一个对象,其中键表示表的字段。所有这些都聚合到一个数组中,但您可以使用基本概念来构建您认为适合使用的任何数据结构。
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);
});
相关文章:
- 在单击任何位置时隐藏元素,而不检查每次DOM单击
- 是否有任何snippet或jQuery插件可以列出easylist.txt模式匹配的DOM中的所有元素
- 在不使用JQuery的情况下隐藏DOM中的选定元素
- 如何在DOM元素上按类型构建此函数
- Windows形成web浏览器控件和Javascript更改的DOM
- Datatables:通过DOM数据源中的名称引用列
- 在DOM中查找一个模式并替换它's的内容使用jquery
- DOM事件通过JSON转换为java
- 将DOM节点值与字符串Javascript进行比较
- delete在Object上效率低下,但在DOM Element's的数据属性,与null out相比
- 流星中DOM的繁殖
- JavaScript滚动脚本-在测试中激发,而不是在开发站点上
- DOM元素和angular元素之间的主要区别是什么
- 刷新 DOM 而不重新拉取外部包含 (fe.JS 或 CSS) / 刷新 DOM,无需完整站点刷新
- 将外部 Javascript 和 CSS 文件包含在另一个站点的 DOM 中
- 强化:基于 DOM 的跨站点脚本
- 不同的站点如何对简单的DOM操作做出反应
- 扫描远程站点's DOM
- jQuery访问站点中的DOM
- 从站点检索 DOM 数据