HttpClient c#- как получить данные динамического контента?

#c# #get #httpresponse #dotnet-httpclient #dynamic-content

Вопрос:

Например, мне нужно получить значения цен из https://www.futbin.com/22/sales/415/erling-haaland?platform=pc, которые расположены в таблице «продажи-внутренние». Проблема в том, что HTTP-ответ возвращает результаты без загруженных цен.

 HttpResponseMessage response = await client.GetAsync("https://www.futbin.com/22/sales/415/?platform=pc");
response.EnsureSuccessStatusCode();
string responseString = await response.Content.ReadAsStringAsync();
 

Как получить эти данные?

Комментарии:

1. Предполагая, что содержимое загружается через API после загрузки самой страницы, вы можете найти запрос API в отладчике вашего браузера на вкладке Сеть. В противном случае вам придется научиться очищать одностраничные приложения (что потребует разрешения выполнения содержимого Javascript страницы — возможно, с помощью инструмента автоматизации браузера, такого как Selenium или Puppeteer).

2. Данные загружаются на эту страницу с помощью AJAX-запросов. Проверить futbin.com/22/getPlayerSales?resourceId=239085amp;platform=pc и futbin.com/…

3. Спасибо вам за ваш ответ! Это очень помогло!

Ответ №1:

URL — адрес, который вы упомянули в вопросе, отображает представление. Чтобы получить фактические данные, вам необходимо проверить приведенные ниже URL-адреса. Пожалуйста, обратите внимание, что я получил приведенные ниже URL-адреса из окна отладчика, но вы можете проверить документы, если API уже предоставлены.

https://www.futbin.com/22/getPlayerSales?resourceId=239085amp;platform=pc
https://www.futbin.com/getPlayerChart?type=live-salesamp;resourceId=239085amp;platform=pc

 public async Task Main()
{
    HttpClient client = new HttpClient();
    HttpResponseMessage response = await client.GetAsync(@"https://www.futbin.com/22/getPlayerSales?resourceId=239085amp;platform=pc");
    response.EnsureSuccessStatusCode();
    string responseString = await response.Content.ReadAsStringAsync();
    Console.WriteLine(responseString);
}
 

Ответ №2:

Вы получаете html без результатов, потому что они загружают данные при загрузке страницы. Откройте инструменты разработки в своем браузере и перейдите на вкладку сеть, там вы увидите, что они извлекают данные из:

https://www.futbin.com/22/getPlayerSales?resourceId=239085amp;platform=pc

Это возвращает список всех цен с датами в json.

Комментарии:

1. Большое вам спасибо!