我是 node.js 和cheerio 的初学者,有一点帮助会很棒:D
我尝试抓取 pubg.op.gg 网站以在控制台中显示两个简单的元素。这是我的代码:
var url = "https://pubg.op.gg/user/K1uu"
var request = require('request');
var cheerio = require('cheerio');
var cheerioAdv = require('cheerio-advanced-selectors');
request(url, function(err, resp, body) {
var $ = cheerio.load(body);
var playerName = $('.player-summary__name');
var playerNameText = playerName.text();
console.log(playerNameText);
var playerRank = $('.ranked-stats__rating-point');
var playerRankText = playerRank.text();
console.log(playerRankText);
})
我试着有这样的东西:“Kyuu - 1503” playernickname 的 Kyuu 值没问题,但不可能有 1503 但是 div 的名称是正确的!我的问题在哪里?
谢谢你们 !!
嘿,欢迎来到 StackOverflow!
该网站使用 AJAX 来获取评级,因此在加载 HTML 时评级不可用,并且ranked-stats__rating-point
该类尚不存在。如果您使用浏览器的开发人员工具检查它,您可以看到它为 3 个不同的评级点请求了 3 个额外的 URL(唯一的区别是queue_size
URL 参数)。
https://pubg.op.gg/api/users/59fdce2bdf1b210001a9324d/ranked-stats?season=pc-2018-01&queue_size=1&mode=tpp
https://pubg.op.gg/api/users/59fdce2bdf1b21004s/59fdce2bdf1b21004d/a ?season=pc-2018-01&queue_size=2&mode=tpp
https://pubg.op.gg/api/users/59fdce2bdf1b210001a9324d/ranked-stats?season=pc-2018-01&queue_size=4&mode=tpp
您应该能够像这样请求第一个评级:
var url = "https://pubg.op.gg/api/users/59fdce2bdf1b210001a9324d/ranked-stats?season=pc-2018-01&queue_size=1&mode=tpp";
var request = require('request');
request(url, function(err, resp, body) {
var jsonData = JSON.parse(body);
var score = jsonData['stats']['rating'];
console.log(score); // outputs "1520"
} );
但是,用户名无法从这些端点获得,因此如果您想为任意用户名获取这些端点,则需要为此找到另一个 API 端点。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句