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

+0

我现在觉得愚蠢......至少ty很容易,我确信这样的事情是我的麻烦的原因 – thor