Kip Dole
|
Posted: 09/08/2003, 2:15 PM |
|
Hello,
How would I automatically pull in 15 minute delay stock prices to my application. Thanks for your help.
Kip
|
|
|
Hamilton
|
Posted: 09/09/2003, 7:08 AM |
|
You will need to create 3 files, as follows;
File Name: SimpleXMLStockScraper.xsl
<?xml version="1.0" ?>
- <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" version="2.0">
<xsl:output method="html" />
- <xsl:template match="stocks">
- <table border="1">
- <tr>
- <th>
<p>Symbol</p>
</th>
- <th>
<p>Last Trade Value</p>
</th>
- <th>
<p>Last Trade Date</p>
</th>
- <th>
<p>Last Trade Time</p>
</th>
- <th>
<p>Change</p>
</th>
- <th>
<p>Open</p>
</th>
- <th>
<p>Days Range High</p>
</th>
- <th>
<p>Days Range Low</p>
</th>
- <th>
<p>Volume</p>
</th>
</tr>
- <xsl:for-each select="stock">
- <tr>
- <td>
- <p>
<xsl:value-of select="symbol" />
</p>
</td>
- <td>
- <p>
<xsl:value-of select="last_trade_value" />
</p>
</td>
- <td>
- <p>
<xsl:value-of select="last_trade_date" />
</p>
</td>
- <td>
- <p>
<xsl:value-of select="last_trade_time" />
</p>
</td>
- <td>
- <p>
<xsl:value-of select="change" />
</p>
</td>
- <td>
- <p>
<xsl:value-of select="open" />
</p>
</td>
- <td>
- <p>
<xsl:value-of select="days_range_high" />
</p>
</td>
- <td>
- <p>
<xsl:value-of select="days_range_low" />
</p>
</td>
- <td>
- <p>
<xsl:value-of select="volume" />
</p>
</td>
</tr>
</xsl:for-each>
</table>
</xsl:template>
</xsl:stylesheet>
*********************************************************
File Name: SimpleXMLStockScraper.asp
<% Option Explicit %>
<!-- #include file="SimpleXMLStockScraperClass.asp" -->
<html>
<head>
<title>Simple XML Stock Scraper Demo</title>
</head>
<body>
<form method="post">
<table border="1">
<tr>
<td colspan="2"><p>Enter Stock Symbols (seperated by commas)</p></td>
</tr>
<tr>
<td><input type="text" value="MSFT,DELL,^DJI" name="frmSymbols" /></td>
<td><input type="submit" value="Get Quote" /></td>
</tr>
</table>
</form>
<%
If Not IsEmpty(Request.Form("frmSymbols")) Then
Dim objXMLQuote, _
objXMLDOMDocument, _
objXMLDOMStyleSheet
' Create an instance of the class
Set objXMLQuote = New XMLQuote
' Add submitted symbols
objXMLQuote.AddSymbols(Request.Form("frmSymbols"))
' Retrieve the XML document from the class
Set objXMLDOMDocument = objXMLQuote.GetXMLQuote()
' Create and load an XSL stylesheet
Set objXMLDOMStyleSheet = Server.CreateObject("MSXML2.DOMDocument")
objXMLDOMStyleSheet.Async = False
objXMLDOMStyleSheet.Load Server.MapPath("SimpleXMLStockScraper.xsl")
' Write transformed XML document
Response.Write objXMLDOMDocument.TransformNode(objXMLDOMStyleSheet)
Set objXMLDOMStyleSheet = Nothing
Set objXMLDOMDocument = Nothing
Set objXMLQuote = Nothing
End If
%>
</body>
</html>
********************************************************
File Name: SimpleXMLStockScraperClass.asp
<%
Class XMLQuote
Dim arrSymbols
Private Function AddSymbol(ByVal strNewSymbol)
If IsEmpty(arrSymbols) Then
ReDim arrSymbols(0)
Else
ReDim Preserve arrSymbols(UBound(arrSymbols) + 1)
End If
arrSymbols(UBound(arrSymbols)) = strNewSymbol
End Function
Public Function AddSymbols(ByVal arrNewSymbols)
Dim i
arrNewSymbols = Split(Replace(arrNewSymbols, " ", ""), ",")
For i = 0 to UBound(arrNewSymbols)
Addsymbol(arrNewSymbols(i))
Next
End Function
Public Function GetXMLQuote()
Dim objXMLDOMDocument, _
objXMLDOMBody, _
objXMLDOMNode, _
objXMLDOMBodyNode, _
objXMLHTTP, _
strSymbols, _
strQuote, _
strQuoteField, _
strQuoteFieldNames, _
i, j
Set objxMLDOMDocument = Server.Createobject("MSXML2.DOMDocument")
objXMLDOMDocument.AppendChild objXMLDOMDocument.CreateProcessingInstruction("xml", "version=""1.0""")
strSymbols = Join(arrSymbols, "+")
strQuoteFieldNames = Array("symbol", "last_trade_value", "last_trade_date", "last_trade_time", "change", "open", "days_range_high", "days_range_low", "volume")
On Error Resume Next
Set objXMLHTTP = Server.CreateObject("MSXML2.XMLHTTP")
objXMLHTTP.Open "GET", "http://finance.yahoo.com/d/quotes.csv?s=" & strSymbols & "&f=sl1d1t1c1ohgv&e=.csv", False
objXMLHTTP.Send
On Error Goto 0
If objXMLHTTP.Status = 200 Then
strQuote = Split(objXMLHTTP.ResponseText, vbCrLf)
Set objXMLDOMBody = objXMLDOMDocument.CreateElement("stocks")
For i = 0 To UBound(strQuote) - 1
strQuoteField = Split(Replace(strQuote(i), """", ""), ",")
Set objXMLDOMBodyNode = objXMLDOMDocument.CreateElement("stock")
For j = 0 To UBound(strQuoteField)
Set objXMLDOMNode = objXMLDOMDocument.CreateElement(strQuoteFieldNames(j))
objXMLDOMNode.Text = strQuoteField(j)
objXMLDOMBodyNode.AppendChild objXMLDOMNode
Next
objXMLDOMBody.AppendChild objXMLDOMBodyNode
Next
objXMLDOMDocument.AppendChild objXMLDOMBody
Else
Set objXMLDOMBody = objXMLDOMDocument.CreateElement("error")
Set objXMLDOMNode = objXMLDOMDocument.CreateElement("error_code")
objXMLDOMNode.Text = objXMLHTTP.Status
objXMLDOMBody.AppendChild objXMLDOMNode
Set objXMLDOMNode = objXMLDOMDocument.CreateElement("error_text")
objXMLDOMNode.Text = objXMLHTTP.StatusText
objXMLDOMBody.AppendChild objXMLDOMNode
objXMLDOMDocument.AppendChild objXMLDOMBody
End If
Set GetXMLQuote = objXMLDOMDocument
End Function
End Class
%>
|
|
|
Kip Dole
|
Posted: 09/09/2003, 9:16 AM |
|
Thanks for the reply. I will give it a try!
|
|
|
|