我试图获取存储在页面("https://www.avanza.se/aktier/om-aktien.html/31607/ica-gruppen")上的财务数据。
把这个问题再弄清楚一点。

然后,我尝试将CEFSHARP浏览器中的数据点返回到C#。
const string script = @"(function()
{
var data = this.Highcharts.charts[0].series[0].points;
return data;
})();";
browser.EvaluateScriptAsync(script).ContinueWith(x =>
{
var response = x.Result;
if (response.Success && response.Result != null)
{
//Saving the data to a database.
}
});此返回空或未定义。然后我试着在所有可用的地方检查一下钥匙。代码如下。
browser.FrameLoadEnd += testing;
private void testing(object sender, FrameLoadEndEventArgs args)
{
const string scriptet = @"(function() { var body = window; return Object.keys(body) + ' ' + 'Empty'; })();";
browser.GetMainFrame().EvaluateScriptAsync(scriptet).ContinueWith(y =>
{
var response = y.Result;
if (response.Success && response.Result != null)
{
var onePlusOne = (int)response.Result;
}
});
}我得到了所有的基本键,但是没有一个与页面相关。
我在devtools中尝试了同样的方法,运行以下命令:
Object.keys(window)

发布于 2019-12-08 02:59:18
为了解决这个问题,你应该考虑以下几点:
然后你可以从图表中得到数据:
ChromiumWebBrowser browser;
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
browser = new ChromiumWebBrowser(
"https://www.avanza.se/aktier/om-aktien.html/31607/ica-gruppen");
browser.LoadingStateChanged += Browser_LoadingStateChanged;
browser.Dock = DockStyle.Fill;
Controls.Add(browser);
}
private async void Browser_LoadingStateChanged(object sender,
LoadingStateChangedEventArgs e)
{
if(!e.IsLoading)
{
await Task.Delay(5000);
var script = @"
(function () {
var data = Highcharts.charts[0].series[0].points;
return Array.from(data, p => ({x:p.x, y:p.y, name: p.name}));
})();";
var result = await browser.EvaluateScriptAsync(script);
MessageBox.Show($"{((dynamic)result.Result).Count}");
}
}https://stackoverflow.com/questions/57633701
复制相似问题