Web在Cheerio中抓取HTML表格

我有一个networking抓取项目的问题。 这里是我需要刮的页面示例:

<table style="position..."> <thead>..</thead> <tbody id="leaderboard_body"> <tr bgcolor="#155555">..</tr> <tr bgcolor="#155555">..</tr> <tr bgcolor="#155555">..</tr> ... </tbody> </table> 

有关更多详细信息,请参阅以下页面: 世界排行榜

我想访问tr标签内的信息,但我无法实现。 我不能用简单的代码findtbody标签,就像这样,我不知道为什么:

 var cheerio = require("cheerio"); var url = "http://www.dota2.com/leaderboards/?l=french#europe"; var http = require("http"); // Utility function that downloads a URL and invokes // callback with the data. function download(url, callback) { http.get(url, function(res) { var data = ""; res.on('data', function (chunk) { data += chunk; }); res.on("end", function() { callback(data); }); }).on("error", function() { callback(null); }); } download(url, function(data) { if (data) { var $ = cheerio.load(data); var content = $('tbody').text(); console.log(content); } else console.log(err); }); 

这是因为表格不存在于HTML中,所以在页面加载之后用javascript插入,并且不能以传统方式进行修改。

始终注意源代码,而不仅仅是控制台中的实时视图。

只做最低限度的研究表明,该表是根据请求获得的JSON构build的

http://www.dota2.com/webapi/ILeaderboard/GetDivisionLeaderboard/v0001?division=europe

在那里,您可以预先格式化所有需要的数据,而无需刮取HTML