【问题标题】:Web scraping an HTML table in Cheerio网页在 Cheerio 中抓取 HTML 表格
【发布时间】:2016-03-02 02:13:25
【问题描述】:

我的网页抓取项目有问题。这是我需要抓取的页面示例:

<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);
  
});

【问题讨论】:

    标签: javascript node.js web web-scraping cheerio


    【解决方案1】:

    那是因为HTML中不存在表格,它是在页面加载后用javascript插入的,不能用传统的方式刮掉。

    始终查看源,而不仅仅是控制台中的实时视图。

    仅做最少的研究表明,该表是根据请求获得的 JSON 构建的

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

    您已经拥有了所有您需要的预格式化和准备好的数据,而无需抓取 HTML

    【讨论】:

    • 我现在感觉很愚蠢......至少这很容易,而且我确信类似的事情是我麻烦的原因
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多