【问题标题】:HttpClient c#- how to get dynamic content data?HttpClient c#-如何获取动态内容数据?
【发布时间】:2021-11-23 00:00:19
【问题描述】:

例如,我需要从位于“sales-inner”表中的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();

如何获取这些数据?

【问题讨论】:

  • 假设内容是在页面本身加载后通过 API 加载的,您可以在浏览器的调试器中的网络选项卡下找到 API 请求。否则,您将不得不学习如何抓取单页应用程序(这将涉及允许执行页面的 Javascript 内容 - 可能使用 Selenium 或 Puppeteer 等浏览器自动化工具)
  • 数据通过 AJAX 请求加载到该页面。检查futbin.com/22/getPlayerSales?resourceId=239085&platform=pcfutbin.com/…
  • 感谢您的回答!这帮助很大!

标签: c# get httpresponse dotnet-httpclient dynamic-content


【解决方案1】:

您在问题中提到的 URL 呈现视图。要获取实际数据,您需要检查以下 URL。请注意,我从调试器窗口中获得了以下 URL,但如果 API 已提供,您可以查看文档。

https://www.futbin.com/22/getPlayerSales?resourceId=239085&platform=pc https://www.futbin.com/getPlayerChart?type=live-sales&resourceId=239085&platform=pc

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

【讨论】:

    【解决方案2】:

    您得到的 html 没有结果,因为它们在页面加载时加载数据。在浏览器中打开开发工具并检查网络选项卡,您会看到它们从以下位置提取数据:

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

    这会返回一个包含 json 日期的所有价格的列表。

    【讨论】:

    • 非常感谢!
    猜你喜欢
    • 2021-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多