使用C#从网页中获取十进制值
Get decimal value from webpage with C#
有很多线程与此类似,但我无法弄清楚我wanted.I 想从网页中获取什么十进制值。
这是网站:https://www.lme.com/Metals/Non-ferrous/LME-Aluminium#Trading+day+summary
我会得到我在下图中标记的铝价。
我尝试了下面所述的代码,但它只得到 html 个代码。
WebClient wb = new WebClient();
String strPageCode = wb.DownloadString("https://www.lme.com/Metals/Non-ferrous/LME-Aluminium#Trading+day+summary");
richTextBox1.Text = strPageCode;
我想我必须检查类似 google chrome 的页面元素。为此,我尝试使用 selenium nuget 包,但我无法弄清楚。
另一种解决方法是sendkey CTRL+A 和CTRL+C 复制所有页面内容。然后从剪贴板内容中提取值。但是如何在不打开浏览器的情况下发送密钥?
为了获取这些值,您必须向此 API 端点发出 GET
请求:/api/trading-data/day-delayed?datasourceId=1a0ef0b6-3ee6-4e44-a415-7a313d5bd771
(基地址:https://www.lme.com)。
获取这些值的示例:
using System.Text.Json;
HttpClient client = new();
client.BaseAddress = new Uri("https://www.lme.com");
var response = await client.GetStringAsync("/api/trading-data/day-delayed?datasourceId=1a0ef0b6-3ee6-4e44-a415-7a313d5bd771");
var table = JsonSerializer.Deserialize<Table>(response);
var bids = table.Rows.Select(r => r.Values[0]);
var offers = table.Rows.Select(r => r.Values[1]);
// POCO
public class Table
{
public Row[] Rows { get; set; }
public string Title { get; set; }
public string Strapline { get; set; }
public string SupportingCopy { get; set; }
public string NoDataMessage { get; set; }
public int DataType { get; set; }
public DateTime DateOfData { get; set; }
public DateTime LookbackDate { get; set; }
public bool HistoricalDataLookbackEnabled { get; set; }
public int HistoricalDataLookbackRange { get; set; }
public int HistoricalDataLookbackUnit { get; set; }
public int HistoricalDataDisplayPeriod { get; set; }
public string[] ColumnTitles { get; set; }
public bool HideColumnTitles { get; set; }
}
public class Row
{
public DateTime BusinessDateTime { get; set; }
public string Ric { get; set; }
public string RowTitle { get; set; }
public DateTime[] BusinessDates { get; set; }
public string[] Values { get; set; }
public string HoverMessage { get; set; }
public string HoverValue { get; set; }
public object HoverValues { get; set; }
public string HoverText { get; set; }
}
有很多线程与此类似,但我无法弄清楚我wanted.I 想从网页中获取什么十进制值。
这是网站:https://www.lme.com/Metals/Non-ferrous/LME-Aluminium#Trading+day+summary
我会得到我在下图中标记的铝价。
我尝试了下面所述的代码,但它只得到 html 个代码。
WebClient wb = new WebClient();
String strPageCode = wb.DownloadString("https://www.lme.com/Metals/Non-ferrous/LME-Aluminium#Trading+day+summary");
richTextBox1.Text = strPageCode;
我想我必须检查类似 google chrome 的页面元素。为此,我尝试使用 selenium nuget 包,但我无法弄清楚。
另一种解决方法是sendkey CTRL+A 和CTRL+C 复制所有页面内容。然后从剪贴板内容中提取值。但是如何在不打开浏览器的情况下发送密钥?
为了获取这些值,您必须向此 API 端点发出 GET
请求:/api/trading-data/day-delayed?datasourceId=1a0ef0b6-3ee6-4e44-a415-7a313d5bd771
(基地址:https://www.lme.com)。
获取这些值的示例:
using System.Text.Json;
HttpClient client = new();
client.BaseAddress = new Uri("https://www.lme.com");
var response = await client.GetStringAsync("/api/trading-data/day-delayed?datasourceId=1a0ef0b6-3ee6-4e44-a415-7a313d5bd771");
var table = JsonSerializer.Deserialize<Table>(response);
var bids = table.Rows.Select(r => r.Values[0]);
var offers = table.Rows.Select(r => r.Values[1]);
// POCO
public class Table
{
public Row[] Rows { get; set; }
public string Title { get; set; }
public string Strapline { get; set; }
public string SupportingCopy { get; set; }
public string NoDataMessage { get; set; }
public int DataType { get; set; }
public DateTime DateOfData { get; set; }
public DateTime LookbackDate { get; set; }
public bool HistoricalDataLookbackEnabled { get; set; }
public int HistoricalDataLookbackRange { get; set; }
public int HistoricalDataLookbackUnit { get; set; }
public int HistoricalDataDisplayPeriod { get; set; }
public string[] ColumnTitles { get; set; }
public bool HideColumnTitles { get; set; }
}
public class Row
{
public DateTime BusinessDateTime { get; set; }
public string Ric { get; set; }
public string RowTitle { get; set; }
public DateTime[] BusinessDates { get; set; }
public string[] Values { get; set; }
public string HoverMessage { get; set; }
public string HoverValue { get; set; }
public object HoverValues { get; set; }
public string HoverText { get; set; }
}