Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从nasdaq omx nordic获取数据_C#_Asp.net Core_Web Scraping_.net Core - Fatal编程技术网

C# 如何从nasdaq omx nordic获取数据

C# 如何从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的能力,那么您需要浏览器组件或 无头浏览器。这样做还意味着,如果网站实时更新价格,即不需要重新加载,

我试图直接从这里削价 使用UsingHTMLAgilityPack插件

这不起作用,所以我查看了访问该页面时发出的请求。使用某些表单数据调用了以下url


我试图通过使用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客户机上工作,但它确实如此。非常感谢