Разбор таблицы с веб-страницы? - PullRequest
0 голосов
/ 02 января 2019

Я очень плохо знаком с программированием и пытаюсь создать консольное приложение, которое будет показывать текущую таблицу премьер-лиги (футбол).

Использование этого URL "https://www.premierleague.com/matchweek/3277/table".

Я использую пакет гибкости HTML. Я пробовал это:

var url = "https://www.premierleague.com/matchweek/3277/table";
        var HttpClient = new HttpClient();
        var html = await HttpClient.GetStringAsync(url);
        var htmlDocument = new HtmlDocument();
        htmlDocument.LoadHtml(html);
        var TableList = htmlDocument.DocumentNode.Descendants("tbody")
        .Where(node => node.GetAttributeValue("class", " ")
        .Equals("standingEntriesContainer")).ToList();
        Console.WriteLine();

Редактировать: Извините, я не сказал ни словаэто очень хорошо. Мне было интересно, как отобразить таблицу из URL в консоли и получить ценную информацию, которую я хочу, из документа HTML. Мое текущее решение, кажется, не анализирует информацию, которую я хочу.

1 Ответ

0 голосов
/ 31 января 2019

То, что у вас есть, довольно близко. Еще несколько дополнительных шагов. Например:

        var table = htmlDocument.DocumentNode.Descendants("tbody")
        .FirstOrDefault(node => node.GetAttributeValue("class", " ")
        .Equals("standingEntriesContainer") && node.ChildNodes.Count > 0);

        foreach (var tr in table.ChildNodes)
        {
            Console.Write(tr.ChildNodes[0].Descendants("span").FirstOrDefault().InnerText);
            Console.Write(tr.ChildNodes[1].Descendants("a").FirstOrDefault().InnerText);
            Console.Write(tr.ChildNodes[2].InnerText);
            Console.Write(tr.ChildNodes[3].InnerText);
            Console.Write(tr.ChildNodes[4].InnerText);
        }

Нечто подобное будет работать, и вы можете переформатировать данные таблицы, как вы хотите. Я просто быстро его создал.

...