我希望能够从网页(股价)中检索动态数据。在我意识到它是实时数据之前,我开始检索 html 代码,因此 html 代码几乎没有用处。尽管我希望捕获特定数据,但我想做的只是处理我指定的网页,该网页将返回该网站的文本,而不是 HTML 代码。基本上整个页面的复制和粘贴会很棒..任何想法都会非常感激!
3 回答
通过解析 HTML 进行“屏幕抓取”是在 2000 年代初期......我要做的是阅读亚马逊的 Mechnical Turk。您可以开发一个队列架构,在其中将 url 提交到这个 Mechnical Turk 服务。该服务会自动将这些工作分配给用户,然后他们将执行复制和粘贴您需要的有价值的股票报价信息的繁琐任务。世界各地的用户会焦急地等待下一个 URL 发送到他们的 Mechanical Turk 收件箱……等待机会为您的应用程序复制/粘贴另一个股价。当然,更新您的价格可能需要几分钟,但是嘿,它们将由全球真实的人手动解析!想想可能性吧!
是否可以找到以即用型格式提供的相同数据,而不是为它抓取 HTML?似乎可能有用于股票报价的公共网络服务。
例如:快速搜索“股票价格网络服务”出现了http://www.webservicex.net/stockquote.asmx;一个易于在 .NET 中使用的 ASMX Web 服务。
在您的 Visual Studio 项目中,您应该通过“添加 Web 引用”命令添加对此服务的引用;根据您的项目是针对 .NET 2.0 还是针对 .NET 3.0/3.5,给出的对话框会有所不同。
我添加了对名为的服务的引用StockPriceProxy
:
Public Function GetQuote(ByVal symbol As String) As String
Using quoteService As New StockPriceProxy.StockQuote
return quoteService.GetQuote(symbol)
End Using
End Function
嗯,HTML 包含网站的文本,所以你“只”需要解析 HTML。
编辑:如果数据不在 HTML 中而是动态加载,情况就不同了。如我所见,您有两种选择:
- 找出数据是如何加载的(即读取页面上的 JavaScript)。如果它是通过一些网络服务更新的,你可以在你的程序中查询相同的网络服务。
- 使用网络浏览器获取数据,然后获取页面的动态HTML 树。也许WPF Webbrowser 控件可以帮助您解决这个问题,但我不确定,因为我自己从来没有这样做过。