Как я могу анализировать содержимое HTML-таблицы в чате Discord? Discord.NET С#

Добрый день, я хочу проанализировать содержимое таблицы веб-сайтов. На сайте есть рейтинг лучших игроков за неделю. А командой ~weekly я хочу переиграть 20 лучших игроков. На данный момент у меня есть следующий код:

commands.CreateCommand("weekly")
            .Do(async (e) =>
            {
                WebClient webClient = new WebClient();
                string html = webClient.DownloadString("http://combatarms.nexon.net/de/ranking/player");

                HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
                doc.LoadHtml(html);

                foreach (var cell in doc.DocumentNode.SelectNodes("//table[@class='ranking_tbl']/tr/td"))
                {
                    await e.Channel.SendMessage(cell.InnerText);
                }

               // await e.Channel.SendMessage("test"); 
            });

Но это мне ничего не показывает, так почему я ошибаюсь? Было бы лучше, если бы я мог создать массив (он был раньше, но не работал), где я мог бы сказать: «Мне нужны только первые <tr> (#), вторые <tr> (имя) и, например, седьмой <tr> (название клана).

Но я терплю неудачу с массивом + разбором этого содержимого tr для разногласий:/

Например, 1 строка в таблице:

<table class="ranking_tbl" summary="">
            <colgroup>
                <col width="80">
                <col width="250">
                <col width="100">
                <col width="150">
                <col width="100">
                <col width="100">
                <col width="280">
            </colgroup>
            <thead>
                <tr>
                    <th></th>
                    <th>Name </th>
                    <th>Rang </th>
                    <th>EP </th>
                    <th>KDR </th>
                    <th>Land </th>
                    <th>Clan- </th>
                </tr>
            </thead>
            <tbody>
                <tr>
                    <td class="cell_left">1</td>
                    <td><a href="/de/profile/player/RADICALIST">RADICALIST</a></td>
                    <td><img src="http://caimage.nexoneu.com/Rank/rank_51.gif" alt=""></td>
                    <td>5.219.130</td>
                    <td>1,46</td>
                    <td><img src="http://caimage.nexoneu.com/Web_site/Main/img/flag/SI.png" alt=""></td>
                    <td><a href="/de/clan/profile/Jasmine%20Thompson">Jasmine Thompson</a></td>
                </tr>

person xKushGene    schedule 27.12.2016    source источник
comment
Загруженный текст не содержит значений ‹td›. Взгляните на содержимое переменной html, и вы увидите ‹td›‹/td›.   -  person Pedro Perez    schedule 27.12.2016
comment
есть атрибуты td :/   -  person xKushGene    schedule 27.12.2016
comment
Но они пусты! ‹tbody› ‹tr› ‹td class=cell_left›‹/td› ‹td›‹/td› ‹td›‹/td› ‹td›‹/td› ‹td›‹/td› ‹td›‹/td › ‹td›‹/td› ‹/tr› ‹/tbody›   -  person Pedro Perez    schedule 27.12.2016
comment
Но почему? Как вы можете видеть в html-коде, td не пуст.   -  person xKushGene    schedule 27.12.2016
comment
Я не знаю почему. Вам просто нужно найти способ загрузить нужный контент, а затем вы можете думать о том, как разобрать html и получить то, что вы хотите.   -  person Pedro Perez    schedule 27.12.2016
comment
хм, я не знаю, почему мои знания C # не самые лучшие :/   -  person xKushGene    schedule 27.12.2016


Ответы (1)


Я думаю, что контент в таблице генерируется динамически, его генерирует какой-то код javascript на странице. Но этот динамический контент загружается после загрузки документа. Поэтому, когда вы загружаете страницу, вы не можете получить весь контент.
Подробнее об этом можно прочитать здесь:
htmlagilitypack и проблема с динамическим содержимым
webclient не загружает веб-страницу полностью
Load динамически сгенерированный HTML-код в WebClient
Как извлечь динамический контент ajax с веб-страницы
Очистка данных, динамически сгенерированных JavaScript, в html-документе с использованием C#

person Pedro Perez    schedule 27.12.2016