« ロトの当せんデータを自動取得する(5) | トップページ | ねずみの競馬予想 2007年8月4日(番外編) »

ロトの当せんデータを自動取得する(6)

今回は、前回に続いてロト6の過去のデータのページから当せんデータを取得して格納する処理です。
月別データとはページのフォーマットが違うので今回の処理はロト6、ミニロト共通になっています。

処理の方法は月別の処理とほぼ同じです。
タグとキーワード文字列を探してから当せんデータの文字列を抜き取ります。
そのあとに数値変換して格納する。これの連続です。

'
' 【過去の当せん番号取得処理】
'
' stFile --> ページ名
' nMax   --> データ数(ミニロト=5 ロト6=6)
'
Public Function GetLotoNumberPast(ByVal stFile As String, ByVal nMax As Integer) As Integer

    Dim i, j, k, nCnt As Integer
    Dim iPos, iP1, iP2, iP3, iP4 As Integer
    Dim stHtml, stTxt, stTmp As String
    Dim bStart As Boolean
    Dim stBuf As String

    On Error GoTo ErrorHandler

    stHtml = vbNullString

    ' ここでstHtmlにHTTPまたは保存ファイルからページのデータを読み込んでおく

    j = 0

    iPos = InStr(1, stHtml, "回別", CompareMethod.Text)
    If iPos = 0 Then Return 0

    bStart = False
    iPos = InStr(iPos, stHtml, "<TD", CompareMethod.Text)
    Do While (iPos > 0)
        System.Windows.Forms.Application.DoEvents()

        iP1 = InStr(iPos, stHtml, "/TD>", CompareMethod.Text)
        If iP1 > 0 Then
            stTxt = Mid(stHtml, iPos, iP1 - iPos)
            iP2 = InStr(2, stTxt, ">", CompareMethod.Text)
            iP3 = InStr(2, stTxt, "<span", CompareMethod.Text)
            If iP3 > 0 Then
                iP2 = InStr(iP3, stTxt, ">", CompareMethod.Text)
            End If
            If iP2 > 0 Then
                iP3 = InStr(iP2, stTxt, "<", CompareMethod.Text)
                If iP3 > 0 Then
                    stTmp = Mid(stTxt, iP2 + 1, iP3 - iP2 - 1)
                    If bStart = False Then
                        ' -----------------------------------------------------
                        ' n回のデータを取得する処理
                        ' -----------------------------------------------------
                        iP2 = InStr(1, stTmp, "第")
                        iP3 = InStr(1, stTmp, "回")
                        iP4 = InStr(1, stTmp, "~")
                        If iP2 > 0 And iP3 > 0 And iP4 = 0 Then
                            stTmp = Mid(stTmp, iP2 + 1, iP3 - iP2 - 1)
                            NumWork(j).CountTime = CInt(stTmp)
                            nCnt = 0
                            bStart = True
                        End If
                    Else
                        ' -----------------------------------------------------
                        ' 当せんデータ(ボーナス数字含む)を取得する処理
                        ' -----------------------------------------------------
                        iP2 = InStr(1, stTmp, "年")
                        If iP2 = 0 Then
                            NumWork(j).Data(nCnt) = CByte(stTmp)
                            nCnt += 1
                            If nCnt >= (nMax + 1) Then
                                ' 当せんデータ文字列を作成
                                stBuf = Format(NumWork(j).CountTime, "00000")
                                For k = 0 To nMax - 1
                                    stBuf &= "," & Format(NumWork(j).Data(k), "00")
                                Next k
                                stBuf &= " " & Format(NumWork(j).Data(nMax), "00")
                                stBuf &= vbCrLf

                                ' 当せんデータ文字列を格納
                                If nMax = 5 Then
                                    ReDim Preserve pstMiniLotoTmp(piMiniCnt)
                                    pstMiniLotoTmp(piMiniCnt) = stBuf
                                    piMiniCnt += 1
                                Else
                                    ReDim Preserve pstLoto6Tmp(piLoto6Cnt)
                                    pstLoto6Tmp(piLoto6Cnt) = stBuf
                                    piLoto6Cnt += 1
                                End If

                                bStart = False
                                j += 1
                            End If
                        End If
                    End If
                End If
            End If
            iPos = InStr(iP1, stHtml, "<TD", CompareMethod.Text)
        Else
            iPos = InStr(iPos + 4, stHtml, "<TD", CompareMethod.Text)
        End If
    Loop

    Return j

ErrorHandler:
    Call MsgBox(Err.Description, MsgBoxStyle.Critical Or MsgBoxStyle.MsgBoxSetForeground)
    Return -1

End Function

|

« ロトの当せんデータを自動取得する(5) | トップページ | ねずみの競馬予想 2007年8月4日(番外編) »

ギャンブル」カテゴリの記事

パソコン・インターネット」カテゴリの記事

ロト」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/217467/16001443

この記事へのトラックバック一覧です: ロトの当せんデータを自動取得する(6):

« ロトの当せんデータを自動取得する(5) | トップページ | ねずみの競馬予想 2007年8月4日(番外編) »