C# 如何从nasdaq omx nordic获取数据
我试图直接从这里削价 使用UsingHTMLAgilityPack插件 这不起作用,所以我查看了访问该页面时发出的请求。使用某些表单数据调用了以下urlC# 如何从nasdaq omx nordic获取数据,c#,asp.net-core,web-scraping,.net-core,C#,Asp.net Core,Web Scraping,.net Core,我试图直接从这里削价 使用UsingHTMLAgilityPack插件 这不起作用,所以我查看了访问该页面时发出的请求。使用某些表单数据调用了以下url 我试图通过使用postman创建一个请求并传递相同的表单数据来复制它,但收到了一个无效的请求。不确定过去使用过的Html Agility数据包,但目前我最想使用的是JavaScript或JQuery。特别是如果它使用ajax加载内容或需要呈现JS的能力,那么您需要浏览器组件或 无头浏览器。这样做还意味着,如果网站实时更新价格,即不需要重新加载,
我试图通过使用postman创建一个请求并传递相同的表单数据来复制它,但收到了一个无效的请求。不确定过去使用过的Html Agility数据包,但目前我最想使用的是JavaScript或JQuery。特别是如果它使用ajax加载内容或需要呈现JS的能力,那么您需要浏览器组件或 无头浏览器。这样做还意味着,如果网站实时更新价格,即不需要重新加载,那么您也不需要每次都启动新会话,只需在睡眠5秒后重新读取dom,对于某些刮削任务来说,这非常有效
使用Chrome驱动程序签出PhantomJS或Selenium PhantomJS驱动程序已经有一段时间没有更新了。正如您已经注意到的,您所需要的只是将正确的输入发布到 我从chrome的开发者窗口复制了下面的requestXML
string url = "http://www.nasdaqomxnordic.com/webproxy/DataFeedProxy.aspx";
string requestXML = @"<post>
<param name=""Exchange"" value=""NMF""/>
<param name=""SubSystem"" value=""Prices""/>
<param name=""Action"" value=""GetInstrument""/>
<param name=""inst__a"" value=""""/>
<param name=""ext_xslt"" value=""/nordicV3/trades_table.xsl""/>
<param name=""inst.an"" value=""nm""/>
<param name=""inst__e"" value=""3""/>
<param name=""Instrument"" value=""SSE132883""/>
<param name=""ext_xslt_lang"" value=""en""/>
<param name=""ext_xslt_hiddenattrs"" value="",x,id,tr,""/>
<param name=""ext_xslt_tableId"" value=""tradesForShareTable""/>
<param name=""ext_xslt_options"" value="",noflag,menu,""/>
<param name=""app"" value=""/etp/etn/etninfo""/>
</post>";
using (var client = new HttpClient())
{
var values = new Dictionary<string, string>()
{
{ "xmlquery", requestXML }
};
var content = new FormUrlEncodedContent(values);
var resp = await client.PostAsync(url, content);
var html = await resp.Content.ReadAsStringAsync();
var doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(html);
var table = doc.DocumentNode.Descendants("tr")
.Select(tr =>
new
{
Id = tr.Attributes["id"]?.Value,
Data = tr.Elements("td").Select(x => x.InnerText).ToList()
})
.Where(x => x.Id != null)
.ToList();
}
url和请求数据正是我在postman中尝试的,请求头也是,但得到的url无效。我从未想过它只会在HTTP客户机上工作,但它确实如此。非常感谢