Web抓取Cheerio中的HTML表格
问题描述:
我遇到了网页抓取项目的问题。下面是页面的样本,我需要刮:Web抓取Cheerio中的HTML表格
<table style="position...">
<thead>..</thead>
<tbody id="leaderboard_body">
<tr bgcolor="#155555">..</tr>
<tr bgcolor="#155555">..</tr>
<tr bgcolor="#155555">..</tr>
...
</tbody>
</table>
更多的细节,这里是页:World Leaderboards
我想在TR标签中访问信息,但我不能达到它。我无法找到简单的代码,这样的TBODY标签,我不知道为什么:
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在页面加载后,不能以传统的方式刮掉。
请始终查看源代码,而不仅仅是控制台中的实时视图。
这样做只是最低限度的研究表明,该表从被得到与请求
http://www.dota2.com/webapi/ILeaderboard/GetDivisionLeaderboard/v0001?division=europe
有你有所有的数据,你需要格式化,准备好了,而不必JSON建刮HTML
我现在觉得愚蠢......至少ty很容易,我确信这样的事情是我的麻烦的原因 – thor