Загрузка...

Нужна помошь с получением данных C#

Тема в разделе C# создана пользователем mfo_otrisovka 9 сен 2022. 154 просмотра

  1. mfo_otrisovka
    mfo_otrisovka Автор темы 9 сен 2022 0 8 июл 2022
    В общем я хочу что бы текст из сайта выводился в label на моей форме,
    Хочу сделать мониторинг серверов, вопрос: как мне это реальзовать?
    Пробовал устонавливать HtmlAgilityPack и решать проблемс с ним но чет не допёр,
    Нужно конкретное отображение информации с сайта, если кто то обладает информацией которая может
    помочь мне реализвать это - пишите в тг @pred_tren . или в дс davidka#7777
    Помогшему подарок гарантирую
     
  2. IDont
    IDont 9 сен 2022 <3 232 7 фев 2019
    Хз мб не лучший способ, но попробуй юзать селениум и получать оттуда инфу, но если есть реквесты, то можно и их использовать
     
    1. mfo_otrisovka Автор темы
      IDont, Нет, мне нужно получать и обновлять эту информацию каждые несколько секунд, я точно знаю что это можно сделать с помошью HtmlAgilityPack, но не знаю алгоритма который подошел бы мне, если что то вот ссыль на мониторинг с которого нужно копировать текст (https://www.battlemetrics.com/servers/csgo/14201950) (noad) и именно строку Онлайн игроки: */*
    2. vtlstolyarov
      mfo_otrisovka,
      C#
      private static HttpClient _httpClient = new ();
      private static async Task<string> GetPlayerCount()
      {
      var response = await _httpClient.GetAsync("https://www.battlemetrics.com/servers/csgo/14201950");
      if(response.StatusCode != HttpStatusCode.OK)
      {
      return null;
      }

      var doc = new HtmlAgilityPack.HtmlDocument();
      doc.LoadHtml(await response.Content.ReadAsStringAsync());
      return doc.DocumentNode.SelectSingleNode(@"//dt[normalize-space(text()) = 'Player count']/following-sibling::*[1]/self::dd")?.InnerText;
      }


      label.Text = GetPlayerCount().Result ?? "Error";
    3. vtlstolyarov
      mfo_otrisovka, у HtmlAgilityPack оказывается можно прям с инета грузить, тогда код попроще выглядит, но он начнёт кидать exception'ы если сервер не ответил как ожидается (в предыдущей версии excetion'ов не будет - просто вернёт null):
      C#
      private static string GetPlayerCount()
      {
      var web = new HtmlAgilityPack.HtmlWeb();
      var doc = web.Load("https://www.battlemetrics.com/servers/csgo/14201950");
      return doc.DocumentNode.SelectSingleNode(@"//dt[normalize-space(text()) = 'Player count']/following-sibling::*[1]/self::dd").InnerText;
      }


      try
      {
      label.Text = GetPlayerCount();
      }
      catch
      {
      label.Text = "Error";
      }
Top
Загрузка...