问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

请问用C#如何提取新浪等网站的股票实时动态行情数据?

发布网友 发布时间:2022-05-01 23:30

我来回答

5个回答

热心网友 时间:2022-04-22 10:06

找到一个利用webservice的方法,希望能够帮助你

声明: 这篇文章适合在C#命令行编译器下的开发借鉴,对于已经装了MS.NET的朋友,开发客户端时将会更容易一些,我随后对登出我自己的开发程序,这篇文章为我摘录的.摘录URL:http://www.knowsky.com/2016.html

(一)

Web Services,即Web服务,是微软.NET战略中非常重要的一个概念。它的目的是将Web站点转变为集组织、应用、服务以及设备于一体的可设计Web站点,使Web站点不再处于被动的地位。

本文将介绍如何建立和使用一个在.NET 平台上提供股票报价的Web服务。我们将使用Yahoo的一项以CSV(以逗号分隔的值)的格式提供股票报价的免费服务,将其包含在我们的web 服务中。

注意:这个报价服务例程的运行大约延迟15分钟,只用于教学目的。

建立Web服务

下面将采用逐步讲解代码的形式来帮助你理解在.NET 中Web服务的编程模式。我们可以使用notepad等任何文本编辑器来编写 这里的Web服务例程代码,最后将文件存储为StockQuote.asmx。请注意:所有的Web服务文件保存时都使用扩展名 *.asmx。

<%@ WebService Language="C#" class="DailyStock" %>

代码的第一行定义了一个 Web 服务,使用的语言是C#。class属性用来指示Web服务应该调用和使用的类。如果在Web服务中使用了许多类,那么就应该用这个属性来表明Web服务应该首先调用的类。

using System ;

using System.Web.Services ;

using System.Net ;

using System.IO ;

using System.Text ;

以上代码负责引入必要的名称空间。 请记住永远都要引入System.Web.Services这个名称空间。根据类的需要,再引入保留的名称空间。

public class DailyStock : WebService

{

......

....

}

这里我们将公共类定义为 DailyStock,它扩展了 System.Web.Services.WebService 类。所有想暴露为 Web服务的类都应该扩展System.Web.Services.WebServices类。 另外,Web 服务的存取修饰语永远都是public。

[WebMethod]

public string GetQuote(string symbol)

{

........

........

}

以上我们定义了一个公共Web方法 GetQuote。同类的定义一样,Web 方法也都要用 public这个修饰语来声明。 [WebMethod] 属性呈现出将要被用在Web服务中的一些潜在方法,希望客户存取的所有方法都应该用[WebMethod] 属性进行标记。GetQuote方法接受一个字符串输入参数,它包含了使用者所需要的报价符号。这个方法返回一个字符串,其中包含股票报价或错误

string ret;

try

{

// The Path to the Yahoo Quotes Service

string fullpath = @"http://

// Create a HttpWebRequest object on the Yahoo url

HttpWebRequest webreq = (HttpWebRequest)WebRequestFactory.Create(fullpath);

// Get a HttpWebResponse object from the Yahoo url

HttpWebResponse webresp = (HttpWebResponse)webreq.GetResponse();

// Create a StreamReader object and pass the Yahoo Server stream as a parameter

StreamReader strm = new StreamReader(webresp.GetResponseStream(), Encoding.ASCII);

// Read a single line from the stream (from the server)

// We read only a single line, since the Yahoo server returns all the

// information needed by us in just one line.

ret= strm.ReadLine();

// Close the stream to the server and free the resources.

strm.Close();

}

catch(Exception)

{

// If exception occurred inform the user

ret="Exception Occurred" ;

}

file://Return the Quote or Exception

return ret ;

以上是GetQuote 方法的内容。这里使用一个 try-catch模块来截获从Yahoo中得到股票报价的过程中可能发生的错误。在 try-catch模块内部声明了一个字符串变量,这个变量中保存着获取yahoo服务的完整路径,用户提供的symbol字符串变量被加到这个连接字符串上。

路径建立好之后,就要从连接字符串中构造一个 HttpWebRequest对象和一个 HttpWebResponse 对象。接着,用StreamReader打开一个到Yahoo

(二)

配置Web服务

配置Web 服务与一个配置ASP.NET应用程序相同。如果自己有Web服务器,那么就创建一个称为stockquote 的虚拟目录,然后将 StockQuote.asmx复制到这个目录中。如此就完成了Web 服务的配制。要调用Web服务,首先启动浏览器,然后键入Web 服务的路径,如 http://localhost/stockquote/StockQuote.asmx,接着看到的页面就是由Web服务运行时间环境自动生成的结果。在文本框中键入符号,例如AOL 或 MS,再点击invoke按钮,这时就会弹出一个新的窗口,在其中向你显示了Web服务的输出信息。

使用Web服务

基本上有两种使用Web 服务的方法。可以通过浏览器直接调用 Web 服务,并按照上面介绍的方法来使用它。或者,也可以在应用程序使用它。下面就看看如何建立一个Web 应用程序和一个控制台应用程序,通过它们来使用Web服务。当然,也可以使用Win Form 应用程序作为替代来使用Web 服务。

获取服务的描述

为了与Web服务进行通信,客户应该知道这个Web服务支持哪种方法以及如何与它们进行通信。.NET 上的Web服务自动用SDL(服务描述语言)产生一个 XML格式文档,这样就使客户能够获取与Web服务通信时所需要的信息。 在Web 服务URL之后附加 ?SDL 使Web服务生成客户能够使用的SDL文档。要查阅这里接受的Web 服务的SDL,可以在浏览器中键入http://localhost/stockquote/StockQuote.asmx?SDL。

(三)

构造代理库

.NET 平台上的应用程序可以使用代理库来调用Web服务上的方法,这样使用Web服务就非常容易。生成代理库的第一步是从SDL中生成一个Web服务的代理类。.NET SDK提供了一个叫做WebServiceUtil.exe的工具,它能够帮助我们生成一个代理类。要生成Web服务的代理类,首先进入命令行环境,然后转到将要开发客户应用程序的那个目录,接着输入以下命令:

WebServiceUtil /c:proxy /pa:http://localhost/stockquote/StockQuote.asmx?SDL /n:Quotes

以上命令执行后,会在运行这个命令的目录中生成一个 C# 源代码文件,叫做 DailyStock.cs (要记住Web服务类的名称也是 DailyStock,)。现在来看这些自变量的含义:

l /c:proxy:告诉WebServiceUtil生成一个代理类

l /pa:http://localhost/stockquote/StockQuote.asmx?SDL:向SDL提供Web服务的路径。如果已经将Web服务的SDL 保存到了硬盘上,我们甚至可以提供SDL文件的本地路径。

l /n:Quotes:告诉WebServiceUtil将代理类放在 Quotes名称空间。这样做的目的是为了更容易地管理和使用代理库。

代理库准备好之后,我们使用C# 编译器从上面步骤中刚创建的代理类中生成一个代理库:

csc /target:library /r:System.dll;System.Web.Services.dll;System.Net.dll;

System.IO.dll;System.Xml.Serialization.dll DailyStock.cs

生成代理库的时候,我们使用了 /target:library开关以表示想要输出一个库文件。我们还引用一些曾经在Web服务中使用过的集合。编译器将在运行命令所在目录中生成一个名为DailyStock.dll 的dll 库。

(四)

创建 Web应用程序用户

下面创建一个Web应用程序StockConsumer.aspx,它作为这个StockQuote(股票报价) Web服务的第一个用户。

<%@ Page language="C#" %>

<%@ Import Namespace="System.Xml" %>

<%@ Import Namespace="Quotes" %>

以上引入必要的名称空间。要记住也要引入 Quotes名称空间,它是代理库的名称空间。

<html>

<head>

<script runat=server>

// Wire up the onClick event for a button

protected void button1_Click(object sender, EventArgs e)

{

file://Create a object of the class DailyStock (the proxy class)

DailyStock ds = new DailyStock();

// Call the GetQuote method of the proxy class DailyStock and

// pass the symbol string from the textbox

string res = ds.GetQuote(symbol.Text);

// The returned string has values which are separated

// by commas.

// Hence we split the returned string into parts

char[] splitter = {','} ;

string[] temp = res.Split(splitter);

// Check if the string array returned has more than one

// elements since if there are less than one elements

// then an exception must have been returned

if(temp.Length >1)

{

// The WebService returns a lot of information about the

// stock. We only show the relevant portions

// Set the label to current Index

curindex.Text = "Current Index :"+temp[1];

// Set the label to current Date Time

curdate.Text ="Last Update on"+temp[2]+" at "+temp[3];

}

else

{

error.Text = "Error :"+res ; file://set the error label

}

}

</script>

以上ASP.NET页面代码中,首先对Web 服务DailyStock进行例示。由于已经生成了代理库,因此Web服务的调用方法与其它任何库的调用方法都相同。调用DailyStock 类的GetQuote()方法后,将返回一个字符串,其中包含了以逗号分隔的列表符号的完整信息。

我们将*显示给客户的信息为只显示当前指数和所报告指数的日期/时间。为了将字符串分成若干不同的部分,这里使用了字符串类的Split方法,在出现逗号的地方将字符串分割成部分。并且,将分割开的字符串组成数组之后,再使用相关的数值为Web页面设置不同的标签。

代码的其余部分

<body>

<center>

<h2>.NET101 Stock Quote Consumer </h2>

<form runat=server >

<table border=1 celspacing=1>

<tr><th>Please enter the symbol below</th></tr>

<tr><td>

<asp:textbox id=symbol runat=server />

<asp:button id=button1 text="Get Quote" onClick="button1_Click" runat=server />

</td></tr>

<tr><td><asp:label id=curindex runat=server /></td></tr>

<tr><td><asp:label id=curdate runat=server /></td></tr>

<tr><td><asp:label id=error runat=server /></td></tr>

</table>

</form>

</center>

</body>

</html>

(五)

小结

下面总结一下配置Web应用程序的步骤:

l 创建一个叫做StockConsumer的虚拟目录

l 将 StockConsumer.aspx 文件复制到这个虚拟目录下

l 在wwwroot 文件夹中创建一个 bin 虚拟目录

l 设置bin目录以执行代码的权限

l 将代理 dll 文件DailyStock.dll复制到这个目录下,ASP.NET 运行时间引擎会自动从Bin目录中选择对外部库的引用。这里的例子中,这个外部库是DailyStock.dll。

现在调用文件 http://localhost/StockConsumer/StockConsumer.aspx,然后键入股票的符号,点击 "Get Quote"(获取报价)按钮,就能看到正在使用的Web服务了。注意:Web服务应该能够使用yahoo服务器,否则它就会返回一个错误信息。

参考资料:http://blog.163.com/billy74580/blog/static/392257662009589258102/

热心网友 时间:2022-04-22 11:24

就像采集数据那样 实时采集吧。就是读取新浪股票那个网页 然后用正则或者其他方法分析数据提取对你有用的数据,不过不一定准确,而且也不可能那么频繁的采集。找一下股票接口吧 应该有的

热心网友 时间:2022-04-22 12:59

风险与收益是成正比的,收益越大风险也越高,所以在配资时选择适当的杠杆倍数。he had never seen anything

热心网友 时间:2022-04-22 14:50

用.net的WebClient请求数据,然后分析提取有用的数据

热心网友 时间:2022-04-22 16:58

这个有点难了,除非新浪开放service给你了
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
防静电手腕带简介 QQ管家的金币换礼品是骗人的吧,让输入验证码的时候礼品已经没了._百 ... 安全金币换礼包是真的嘛 电脑管家礼包是骗局? 管家里面用金币兑换实物,为什么我每次兑换都提示已兑换 电脑管家金币兑换礼包是正的吗? 中译英: 这件衬衫和你的裤子很配 我母亲今年79岁,九月份身体不适,B超和肝功检查,结果怀疑是有东西占位... 半永久眉毛二次补色后需要买修复剂吗 左边一个革,右边一个斥去掉点是什么字 网易的股票历史数据接口是不是挂了? 桌面实时显示股票黄金等走势,来源网站可以修改,参数可以修改。 求:上证指数的嵌入网页的实时代码?或者股票行情的接口! 网易股票接口问题 图像处理 如何能识别出一幅图像中人的躯干,腿部和胳膊。 怎样识别身体的酸碱度? 怎么记账写分录呢? - 信息提示 真正正确人体,的人体特征是什么?真正正确人类身体构造的特征是什么?真正正确人类身体构造肉身的特征? 如何辨别自己身体是属热还是属阴 中医会把人分为几种体质么?都有哪几种体质?怎么辨别身体属于那种体质? 怎样识别少儿的体质与身体素质? 认识身体部位的重要性 怎么样才能辨别自己身体是寒性体质还是热性体质?不同的体质存在着哪些问题呢? 人过中年之后,要如何判断自己身体是否出了问题? 有哪些疾病可以通过身体特征看出来? 我是一个出纳新手、想求助出纳那些基本的记账分录 日记账分录应该怎样记录? 苹果12和苹果7同样64g储存量是一样的吗? 苹果7的卡槽和6s一样么 股票行情接口,股票行情数据接口。哪里有 请问证券商是如何获取股票行情数据的,是不是有什么公开的接口和协议 康熙微服私访记主题曲是什么? 有没有网易财经股资金流向统计 api接口 歌词双袁车乌棚船是什么歌里的 如何获取新浪实时股票行情数据 歌词是乌篷船 惊蛰雨是哪一个电视剧曲,很老了 “双辕马,乌篷船,”那首歌叫什么名字 谢军的《乌篷船》 歌词 日本的6月是什么天气? 请教6月京都大阪关西的天气情况 日本5月到6月天气和气温 以及日本 最适合旅游的地方 日本的6月是什么季节? 去日本旅游6月下旬,八月初,哪个时间段更好 日本6月旅游攻略 6月初去日本旅游好玩么 6月去东京旅游一周,该如何安排行程? 日本6月将重启一高龄核电机组,此前该机组为什么关闭了? 日本6月15日从日本东京都到上海的人要隔离吗? 为什么百度网盘截屏抖音不显示