2013年10月28日 星期一

自動從網頁的原始碼取要的資料

參考引用
--
  1. Option Strict On
  2. Option Explicit On
  3. Imports System.Net
  4. Imports System.IO
  5. Imports System.Text
  6. Imports System.Text.RegularExpressions
  7.  
  8. Public Class F_Main
  9. Dim dt As DataTable
  10. Dim dr As DataRow
  11. Dim ds As DataSet
  12. Private Sub initTable()
  13. dt = New DataTable
  14. Dim oCol1 As DataColumn = dt.Columns.Add("stkid", GetType(String))
  15. oCol1.AllowDBNull = True
  16. Dim oCol2 As DataColumn = dt.Columns.Add("fill", GetType(String))
  17. oCol2.AllowDBNull = True
  18. Dim oCol3 As DataColumn = dt.Columns.Add("price", GetType(String))
  19. oCol3.AllowDBNull = True
  20. End Sub
  21.  
  22. Private Sub StkSelect(ByVal stk_id As String)
  23. dr = dt.NewRow
  24. Dim url As String = "http://tw.stock.yahoo.com/q/q?s=" + stk_id
  25. Dim StockValues As String = SketchWebPage(url)
  26.  
  27. Dim index As Integer = 0
  28. Dim GetNowTimeHtml As String = ""
  29. Dim GetStockName As String = "href=""/q/bc?s=" + stk_id + """>"
  30. index = InStr(StockValues, GetStockName) + GetStockName.Length - 1
  31. dr(0) = StockValues.Substring(index, StockValues.IndexOf("", index) - index)
  32.  
  33. Dim GetFillHtml As String = GetNowTimeHtml + ""
  34. index = InStr(StockValues, GetFillHtml) + GetFillHtml.Length - 1
  35. dr(1) = StockValues.Substring(index, StockValues.IndexOf("", index) - index)
  36.  
  37. Dim GetPriceHtml As String = ""
  38. Dim up As String = ""
  39. Dim down As String = ""
  40. Dim zero As String = ""
  41.  
  42. Select Case InStr(StockValues, GetPriceHtml + up)
  43. Case 0
  44. Select Case InStr(StockValues, GetPriceHtml + zero)
  45. Case 0
  46. Dim dowhtml As String = GetPriceHtml + down
  47. index = InStr(StockValues, dowhtml) + dowhtml.Length - 1
  48. dr(2) = StockValues.Substring(index, 5)
  49. Case Else
  50. Dim zerohtml As String = GetPriceHtml + zero
  51. index = InStr(StockValues, zerohtml) + zerohtml.Length - 1
  52. dr(2) = StockValues.Substring(index, 5)
  53. End Select
  54. Case Else
  55. Dim uphtml As String = GetPriceHtml + up
  56. index = InStr(StockValues, uphtml) + uphtml.Length - 1
  57. dr(2) = StockValues.Substring(index, 5)
  58. End Select
  59. dt.Rows.Add(dr)
  60. End Sub
  61.  
  62. Private Function SketchWebPage(ByVal URL As String) As String
  63. Try
  64. Dim lobjRequest As HttpWebRequest
  65. Dim lobjResponse As HttpWebResponse
  66. Dim lobjEncode As Encoding
  67. Dim lobjStreamReader As StreamReader
  68. lobjRequest = CType(WebRequest.Create(URL), HttpWebRequest)
  69. lobjResponse = CType(lobjRequest.GetResponse(), HttpWebResponse)
  70. lobjEncode = System.Text.Encoding.GetEncoding("big5")
  71. '建立一個新的stream去做讀取
  72. lobjStreamReader = New StreamReader(lobjResponse.GetResponseStream, lobjEncode)
  73. Dim stmPage As String = lobjStreamReader.ReadToEnd()
  74. lobjResponse.Close()
  75. lobjStreamReader.Close()
  76. Return stmPage
  77. Catch ex As Exception
  78. Return "FAILED"
  79. End Try
  80. End Function
  81.  
  82. Private Sub btnReload_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnReload.Click
  83. initTable()
  84.  
  85. StkSelect("2891")
  86. StkSelect("1532")
  87. StkSelect("2524")
  88. StkSelect("2409")
  89. StkSelect("2704")
  90. StkSelect("5531")
  91. StkSelect("5347")
  92. Me.DataGridView1.DataSource = dt
  93. Me.DataGridView1.Columns(0).Width = 70
  94. Me.DataGridView1.Columns(1).Width = 60
  95. Me.DataGridView1.Columns(2).Width = 60
  96. End Sub 
End Class

沒有留言:

張貼留言