我正在使用cheerio从 https://www.nba.com/players/langston/galloway/204038 中获取统计信息,但我无法显示表格数据


[the information i want to access][1]

[1]: https://i.stack.imgur.com/4SpCU.png

无论我做什么,我都无法访问统计表。我怀疑这与有多张桌子有关,但我不确定。在此处输入代码

var cheerio = require("cheerio");
var axios = require("axios");

axios
.get("https://www.nba.com/players/langston/galloway/204038")
.then(function (response) {
var $ = cheerio.load(response.data);
console.log(
$("player-detail").find("section.nba-player-stats-traditional").find("td:nth-child(3)").text()
);

});
从get请求返回的实际html不包含数据或表。当浏览器加载页面时,会执行一个脚本,该脚本使用api调用提取数据,并创建页面上的大部分元素。

如果打开chrome开发工具(CTRL+SHIFT+J(并切换到网络选项卡并重新加载页面,您可以看到所有正在进行的请求。第一个是在您的axios GET请求中下载的html。如果你点击它,你可以看到HTML与你检查页面时看到的相比是非常基本的。

如果单击"XHR",将显示为获取数据而进行的大多数API调用。"204038_profile.json"有一个有趣的例子。如果你点击它,你可以看到我认为你想要的json格式的信息,这在不解析html表的情况下更容易使用。您可以右键单击"204038_profile.json"并复制完整的url:

https://data.nba.net/prod/v1/2019/players/204038_profile.json

注意:大多数网站都不喜欢你这样使用他们的数据,你可能想检查他们的政策是什么。他们可能会让访问数据或随时更改URL变得更加困难。

你可能想看看这个问题,或者这个关于如何加载页面并运行javascript来模拟浏览器的问题。

第二个特别有趣,它有一个答案,说明如何拦截和变异来自木偶师的请求

相关内容

  • 没有找到相关文章

最新更新