我正在嘗試通過控制元件 WebView2 獲取具有相同類名的表格單元格中的值
這個答案
獲得單個值很有用,但現在我想考慮可能有多個值的情況。表格完整的html代碼是:
<tbody data-v-39c7db2a=""><tr data-v-39c7db2a=""><td data-v-39c7db2a="" class="text-left">12-31 19:57:47</td> <td data-v-39c7db2a="" class="text-center">Limit</td> <td data-v-39c7db2a="" class="text-center market">KIBA/USDT</td> <td data-v-39c7db2a="" class="text-left price price-down">
0.00003888
</td> <td data-v-39c7db2a="" class="amount leftAmount text-left"><span data-v-39c7db2a=""><!---->
100
KIBA
</span></td> <td data-v-39c7db2a="" class="text-left total">
0.00388800
USDT
</td> <td data-v-39c7db2a="" class="text-right">
0.0000%
</td> <td data-v-39c7db2a="" class="text-right"><span data-v-39c7db2a="" class="cancel ordersO_title_cancelall">Cancel</span></td></tr><tr data-v-39c7db2a=""><td data-v-39c7db2a="" class="text-left">12-31 19:43:51</td> <td data-v-39c7db2a="" class="text-center">Limit</td> <td data-v-39c7db2a="" class="text-center market">KIBA/USDT</td> <td data-v-39c7db2a="" class="text-left price price-down">
0.00003890
</td> <td data-v-39c7db2a="" class="amount leftAmount text-left"><span data-v-39c7db2a=""><!---->
100
KIBA
</span></td> <td data-v-39c7db2a="" class="text-left total">
0.00389000
USDT
</td> <td data-v-39c7db2a="" class="text-right">
0.0000%
</td> <td data-v-39c7db2a="" class="text-right"><span data-v-39c7db2a="" class="cancel ordersO_title_cancelall">Cancel</span></td></tr></tbody>
而表中每一行的代碼是:
<tr data-v-39c7db2a=""><td data-v-39c7db2a="" class="text-left">12-31 19:57:47</td> <td data-v-39c7db2a="" class="text-center">Limit</td> <td data-v-39c7db2a="" class="text-center market">KIBA/USDT</td> <td data-v-39c7db2a="" class="text-left price price-down">
0.00003888
</td> <td data-v-39c7db2a="" class="amount leftAmount text-left"><span data-v-39c7db2a=""><!---->
100
KIBA
</span></td> <td data-v-39c7db2a="" class="text-left total">
0.00388800
USDT
</td> <td data-v-39c7db2a="" class="text-right">
0.0000%
</td> <td data-v-39c7db2a="" class="text-right"><span data-v-39c7db2a="" class="cancel ordersO_title_cancelall">Cancel</span></td></tr>
我感興趣的值是在這種情況下為 0.0000% 的百分比。由于類名相同,我如何回圈以獲取所有類名?
uj5u.com熱心網友回復:
這需要更多的 javascript 才能作業。但是,一旦實施,它應該會更好地作業。首先將以下 javascript 保存到專案根目錄(或子目錄,如果您更改代碼中的路徑)中的“ script.js ”。確保選擇檔案的屬性并選擇Copy to output directory: Copy if newer。復制腳本檔案以便WebView2可以找到它。
這是javascript:
let GetOrders = function ()
{
let doubles = [];
let cells = document.querySelectorAll('div.ordersO.exchange-card.layout-r td.text-right');
let filteredArray = Array.from(cells).filter(function (value)
{
return value.textContent.includes('%') && value.nextElementSibling?.firstElementChild?.textContent.includes('Cancel');
});
filteredArray.forEach(function (value)
{
doubles.push( /[\d. -] /.exec(value.textContent)[0]);
});
return doubles;
};
現在您已經有了 javascript,您可以在表單中實作代碼。由于我不知道Vb.net,我用C#展示了代碼(應該很容易翻譯)。這是整個表單檔案:
using Newtonsoft.Json;
using Microsoft.Web.WebView2.Core;
namespace WinFormsApp1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private async void Form1_Load(object sender, EventArgs e)
{
await webView21.EnsureCoreWebView2Async();
//webView21.CoreWebView2.Navigate(Path.Combine(Environment.CurrentDirectory, "html.html")); // Just my testing with your html
}
private async void WebView21_CoreWebView2InitializationCompleted(object sender, CoreWebView2InitializationCompletedEventArgs e)
{
string script = File.ReadAllText("script.js");
await webView21.CoreWebView2.AddScriptToExecuteOnDocumentCreatedAsync(script);
}
private async void Button1_Click(object sender, EventArgs e)
{
string json = await webView21.ExecuteScriptAsync("GetOrders()");
decimal[] orders = JsonConvert.DeserializeObject<decimal[]>(json) ?? Array.Empty<decimal>();
if (orders.Length == 0)
{
MessageBox.Show("No orders");
}
else
{
MessageBox.Show(String.Join(',', orders));
}
}
}
}
請注意,我使用CoreWebView2.AddScriptToExecuteOnDocumentCreatedAsync- 在頁面中注入代碼,以便您稍后呼叫它。
由于ExecuteScriptAsync回傳 JSON,我使用它JsonSerializer.Deserialize<decimal[]>來創建一個decimal值陣列。
如果沒有訂單,此代碼也將起作用(回傳一個空陣列)。
編輯:
改為使用Newtonsoft.Json.
編輯2:
更改了 javascript 代碼以避免重復!
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/400878.html
上一篇:按第二個索引對元組進行排序
