Проблема со соскобом сайта OP.GG с node.js и cheerio - PullRequest
0 голосов
/ 04 октября 2018

Я новичок в работе с 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);   
})

Image of values

Я пытаюсь получить что-то вроде этого: "Kyuu - 1503" Нет проблем для значения Kyuu для никнейма игрока, но невозможно получить 1503однако имя div правильное!Где моя проблема?

Спасибо, ребята !!

Ответы [ 2 ]

0 голосов
/ 04 октября 2018

Привет корсоса и спасибо за ответ!Да, для имени есть несколько элементов с рейтинговой точкой рейтинга.

Результат вашего кода:

var playerRankText = playerRank [1] .text ();
TypeError: Невозможно прочитать свойство 'text' из неопределенного

0 голосов
/ 04 октября 2018

Привет и добро пожаловать в StackOverflow!

Этот веб-сайт использует AJAX для получения оценок, поэтому при загрузке HTML оценки недоступны, а класс ranked-stats__rating-point еще не существует.Если вы проверите его с помощью инструментов разработчика браузера, то увидите, что он запрашивает 3 дополнительных URL-адреса для 3 различных рейтинговых баллов (единственное отличие - параметр 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/59fdce2bdf1b210001a9324d/ranked-stats?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 для этого, если вы хотите получить их для произвольных имен пользователей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...