ロト

ロト6 3等当せん体験

Loto632_3
 
 第376回のロト6で3等が当たって、
 ネットで当せん手続きについて検索したのですが
 実際の手続きについて書かれている情報が少なかったのと、
 もう2度と同じ体験が無いかもしれないので(笑)
 当せん手続きの体験記を書いておこうと思います。




今回は、50万円以上100万円以下の当せん金なので、本人確認書類(健康保険証、免許証など)と
印鑑を持ってみずほ銀行の支店に行ってきました。
まず銀行に着いて、案内の女性に「ロト6で3等が当たった」と言うと、チャンスセンターで当せんの
確認をしてきてくれと言われました。「何だよ、当たっているのを信用していないな!」と思いつつ、
まあ、勘違いでいちいち窓口に来られちゃ大変なんだろうなと思って、
銀行の脇のチャンスセンター(宝くじの売り場)に行って確認してきました。
チャンスセンターの女性の「おめでとうございますっ!」と少しオーバーアクションな声も心地よく、
もらった明細書を手にして再び銀行の中へ。
さっきの案内の女性に明細書を見せると、日付と氏名を書く程度の簡単な書類を渡されて、
この書類に記入して、整理券を取って待っていて下さいとの事。
数分待って整理券の番号が呼ばれたので、窓口の女性に「おめでとうございます」と言われながら、
当せん券と本人確認書類の運転免許証を渡してまた少し待ちます。
自分の場合は、ここで15~20分程度待ちました。
再び名前を呼ばれて窓口に行くと、免許証と当せん金を渡されて「ハイ、終わり」です。
持っていった印鑑を使わないので聞いてみると、当せん券の裏にハンコが押されていれば必要ないとの事。
以上で手続きは終わりです。極端に銀行が混雑していなければ30分~1時間程度で受け取れます。

以上、整理すると

①手続きに行く前に当せん券の裏面に必要事項を記入してハンコを押しておくと楽です。
②事前に宝くじの売り場に行って当せん確認をしてくると良い。もらった明細書は無くさないように。
③50万円以上の当せん金の時は、本人確認書類を忘れないこと。

こんな感じです。
めざせ、高額当せん!


| | コメント (0) | トラックバック (0)

みずほ銀行のHPが変わった!

みずほ銀行の宝くじ当せん案内ページ(宝くじコーナー)のロト6最新回号、
ミニロト最新回号のページフォーマットが変更になっています。
今までは最新のデータが下側になるように配置されていたのですが、
2007年9月から最新回のデータが1番上になるように配置されています。
確かに最新のデータが下側になっていると、画面サイズを小さくしている時に
見逃す可能性があるので、それが理由かな?

ただし、このブログで紹介している「ロトの当せんデータを自動取得する」での
最新回号のデータ取得処理は動作しなくなってしまいました。
でも簡単な処理の変更で修正が可能です。
ヒントは「回別」をキーワード検索して、その位置から <TD> ~ </TD> 間の
文字列を取得して処理するようにすればOKです。
当せん数字のデータが以前のフォーマットと違って順番とおり並んでいるので
わかりやすいと思います。

ちなみに、過去のデータには変更がないようです。

| | コメント (0) | トラックバック (0)

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

最後は、取得した当せんデータを回数の若い順に並べ替える処理です。
素直にページ順でデータを取得すると最新回のデータが先頭になってその後、過去の月別、
過去のデータという感じの並びになって順番がバラバラになります。
もちろんデータ取得するときにそれを考慮して取得すればソートする必要はないのですが、
今回はデータ取得処理を簡略化しているために最後にソート処理しています。


下記が2007年8月8日に実際にデータ取得したロト6の当せんデータです。

00354,04,06,22,31,34,41 43
00350,13,18,25,26,29,40 06
00351,03,13,16,24,26,43 15
00352,06,08,24,25,34,38 10
00353,01,09,15,16,22,26 29
00346,04,09,11,12,32,38 16
00347,08,20,23,27,32,33 13
00348,04,05,06,27,36,38 13
00349,08,13,15,19,20,30 25

最新回(354回)のあとに2007年7月の当せんデータ(350回~353回)、2007年6月の
当せんデータ(346回~349回)と続きます。これでは少しわかりにくいと思います。


実際に最初のカンマまでの5文字を数値変換して、そのデータでソートするとこんな感じになります。

00346,04,09,11,12,32,38 16
00347,08,20,23,27,32,33 13
00348,04,05,06,27,36,38 13
00349,08,13,15,19,20,30 25
00350,13,18,25,26,29,40 06
00351,03,13,16,24,26,43 15
00352,06,08,24,25,34,38 10
00353,01,09,15,16,22,26 29
00354,04,06,22,31,34,41 43

一応少しわかりにくいのですがソートの処理を記述しておきます。データを入れ替えないで
指定したインデックス配列に昇順のデータがセットされる処理です。
piLoto6Cntにはロト6当せんデータ数、pstLoto6Tmp配列には当せんデータ文字列が格納されているとします。

Dim i As Integer
Dim piLoto6Idx() As Integer             ' 昇順インデックス配列
Dim piLoto6IdxData() As Integer         ' 回数データ配列
Dim pstLoto6() As String                ' ソート後の当せんデータ文字列配列

ReDim piLoto6Idx(piLoto6Cnt)
ReDim piLoto6IdxData(piLoto6Cnt)
For i = 0 To piLoto6Cnt - 1
    ' 先頭5文字を回数データに数値変換
    piLoto6IdxData(i) = CInt(Mid(pstLoto6Tmp(i), 1, 5))
Next i
Call SortIndex(piLoto6Cnt, piLoto6Idx, piLoto6IdxData, 0)   ' 昇順ソートを実行

ReDim pstLoto6(piLoto6Cnt)              ' ソート後の当せんデータ配列を確保
For i = 0 To piLoto6Cnt - 1
    pstLoto6(i) = pstLoto6Tmp(piLoto6Idx(i) - 1)
    Debug.Write(pstLoto6(i))
Next i
'
' 【インデックスソート処理】
'
' iMax      --> データ数
' SortNum() --> ソート順のインデックスが格納される配列
' InData()  --> ソートの元データ
'
Public Sub SortIndex(ByVal iMax As Integer, ByVal SortNum() As Integer, ByVal InData() As Integer,
    ByVal Mode As Integer)

    Dim i, j As Integer
    Dim iNumWork() As Integer
    Dim iWorkData() As Integer
    Dim bSts As Boolean

    Dim iPos, iWork As Integer
    Dim iData As Integer

    ReDim iNumWork(iMax)
    ReDim iWorkData(iMax)

    ' データをチェック
    bSts = False
    For i = 0 To iMax - 1
        If InData(i) <> 0 Then
            bSts = True
            Exit For
        End If
    Next i

    For i = 0 To iMax - 1
        SortNum(i) = i + 1
    Next i

    ' データが全て0の時は終了
    If bSts = False Then
        Return
    End If

    ' ソートデータをセット
    For i = 0 To iMax - 1
        iWorkData(i) = InData(i)
    Next i

    ' データをSORTして数値の高い方から並べる
    For i = 0 To iMax - 2
        iPos = i
        iData = iWorkData(iPos)

        For j = i + 1 To iMax - 1
            If Mode = 0 Then        ' 昇順
                If iData > iWorkData(j) Then
                    iPos = j
                    iData = iWorkData(j)
                End If
            Else                    ' 降順
                If iData < iWorkData(j) Then
                    iPos = j
                    iData = iWorkData(j)
                End If
            End If
        Next j
        iWorkData(iPos) = iWorkData(i)
        iWorkData(i) = iData

        iWork = SortNum(iPos)
        SortNum(iPos) = SortNum(i)
        SortNum(i) = iWork
    Next i

End Sub

| | コメント (0) | トラックバック (0)

ロトの当せんデータを自動取得する(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

| | コメント (0) | トラックバック (0)

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

今回は、実際にロト6の月別当せんデータのページからデータを取得して格納する処理です。

この処理では、取得したデータは文字列として保存しています。
ボーナス数字の手前はスペース区切りで、その他はカンマ区切りになっています。
最終的に当せんデータをファイル保存したときにエクセルで見れるようなフォーマットです。

n回(5文字),数字1,数字2,数字3,数字4,数字5,数字6 ボーナス数字

00001,02,08,10,13,27,30 39
00002,01,09,16,20,21,43 05
00003,01,05,15,31,36,38 13
00004,16,18,26,27,34,40 13
00005,09,15,21,23,27,28 43

また、当せんデータの取得のために構造体を作成してワークエリアとして使用しています。

' 当せんデータ用の構造体
Structure LOTODATA
    Dim CountTime As Integer            ' n回
    Dim Data() As Byte                  ' 当せん数字
    Public Sub Initialize()
        CountTime = 0
        ReDim Data(6)                   ' ボーナス数字を含む最大7データ
    End Sub
End Structure

' 過去のデータは最大50回分のデータがまとまっているので、余裕分も含めて51データ分を確保
Public NumWork(50) As LOTODATA

取得したデータの文字列(当せんデータ)はグローバルな pstLoto6Tmp に格納します。
piLoto6Cnt はデータを取得する毎インクリメントされるカウンタです。起動時に0クリアしておきます。

Public pstLoto6Tmp() As String          ' ロト6当せんデータ文字列
Public piLoto6Cnt As Integer            ' ロト6当せんデータ総数

さて、ここからが実際に当せん番号のデータを取得する処理です。
説明を書こうと思ったのですが、かなり強引に処理をしているために細かい説明がうまく書けません。
何をしているかというと、タグとキーワード文字列を探してから当せんデータの文字列を抜き取ります。
そのあとに数値変換して格納する。これの連続です。

'
' 【ロト6月別当せん番号取得処理】
'
' stFile --> ページ名
'
Public Function GetLoto6Number(ByVal stFile As String) As Integer

    Dim i, j, k, nCnt As Integer
    Dim iPos, iP1, iP2, iP3, iP4, iP5 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, "(", CompareMethod.Text)
            If iP2 > 0 Or iP3 > 0 Then
                stTmp = Mid(stTxt, iP2 + 1, Len(stTxt) - iP2)
                If bStart = False Then
                    ' ---------------------------------------------------------
                    ' n回のデータを取得する処理
                    ' ---------------------------------------------------------
                    iP2 = InStr(1, stTmp, "第")
                    iP3 = InStr(1, stTmp, "回")
                    If iP2 > 0 And iP3 > 0 And InStr(1, stTmp, "~") = 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, "年")
                    iP3 = InStr(1, stTmp, "販売")
                    If iP2 = 0 And iP3 = 0 Then
                        iP2 = InStr(1, stTmp, ".")
                        iP3 = InStr(1, stTmp, ".")
                        iP4 = InStr(1, stTmp, "口")
                        iP5 = InStr(1, stTmp, "該当なし")
                        If iP2 = 0 And iP3 = 0 And iP4 = 0 And iP5 = 0 Then
                            iP2 = InStr(1, stTmp, "(")
                            iP3 = InStr(1, stTmp, ")")
                            If iP2 > 0 And iP3 > 0 Then
                                stTmp = Mid(stTmp, iP2 + 1, iP3 - iP2 - 1)
                            End If

                            iP2 = InStr(1, stTmp, "<")
                            If iP2 > 0 Then
                                stTmp = Mid(stTmp, 1, iP2 - 1)
                            End If

                            NumWork(j).Data(nCnt) = CByte(stTmp)
                            nCnt += 1
                            If nCnt >= (6 + 1) Then
                                ' 当せんデータ文字列を作成
                                stBuf = Format(NumWork(j).CountTime, "00000")
                                For k = 0 To 2
                                    stBuf &= "," & Format(NumWork(j).Data(k), "00")
                                Next k
                                For k = 4 To 6
                                    stBuf &= "," & Format(NumWork(j).Data(k), "00")
                                Next k
                                stBuf &= " " & Format(NumWork(j).Data(3), "00")
                                stBuf &= vbCrLf

                                ' 当せんデータ文字列を格納
                                ReDim Preserve pstLoto6Tmp(piLoto6Cnt)
                                pstLoto6Tmp(piLoto6Cnt) = stBuf
                                piLoto6Cnt += 1

                                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

| | コメント (0) | トラックバック (0)

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

今回からは、ページの内容から当せんデータを取得する処理についてです。
最初はページ名を判定して処理を振り分ける方法です。

2007年8月1日現在の当せん番号案内のページでは、最新のロト6当せん番号の
ページ名がlt6-new.html、最新のミニロト当せん番号のページ名がloto-new.htmlとなっています。
このようにページ名でロト6、ミニロトどちらのページかを判断できます。
過去の当せん番号のページは、ある程度の期間まで月別のデータになっていますが、
それ以前のデータは第1回~第50回、第51回~第100回のようにまとめられています。

[過去の月別ページ名]

平成19年7月の当せん番号の場合
ロト6      lt6-h1907.html
ミニロト    loto-h1907.html

[過去のデータ]

第1回~第50回の場合
ロト6      loto60001.html
ミニロト    loto0001.html

上記のようなページ名の規則を利用すればページの判断が可能です。

'
' 【当せん番号処理の振り分け】
'
' stFile --> ページ名
'
Public Function LotoNumberProc(ByVal stFile As String) As Integer

    Dim iRet As Integer

    On Error GoTo ErrorHandler

    iRet = 0
    If InStr(1, stFile, "lt6-", CompareMethod.Text) > 0 Then
        ' ロト6最新の当せん番号と過去の月別当せん番号
        iRet = GetLoto6Number(stFile)
    ElseIf InStr(1, stFile, "loto-", CompareMethod.Text) > 0 Then
        ' ミニロト最新の当せん番号と過去の月別当せん番号
        iRet = GetMiniLotoNumber(stFile)
    Else
        If InStr(1, stFile, "loto6", CompareMethod.Text) > 0 Then
            If Len(stFile) = 14 Then
                ' ロト6過去の当せん番号
                iRet = GetLotoNumberPast(stFile, 6)
                Return iRet
            End If
        End If
        ' ミニロト過去の当せん番号
        iRet = GetLotoNumberPast(stFile, 5)
    End If

    Return iRet

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

End Function

| | コメント (0) | トラックバック (0)

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

今回は、HTMLタグ間のデータを抽出する処理についてです。
リンク先のページアドレスを検索して新しいページのHTMLデータを取得するときや、
HTMLタグ間の数値データを取得するときに必要になります。

例えば、メインページからロト6の最新当せんデータを取得するためには下記の行から
"/miniloto/lt6-new.html" の部分を取得します。

<LI class=loto><A title=ロト6 tabIndex=200 href="/miniloto/lt6-new.html">ロト6</A>

取得した後にGetHtmlWebBrowser("http://www.takarakuji.mizuhobank.co.jp/miniloto/lt6-new.html") を
実行すればロト6の最新当せんデータのページが取得できます。

'
' 【タグ間パラメータ取得処理】
'
' stSrc      --> 取得する元データ
' stStartTag --> 開始タグ
' stEndTag   --> 終了タグ
' stKey      --> キーワードの属性名
' stComp     --> 比較する属性データ
' stTarget   --> 取得するパラメータの属性名
'
Public Function GetTagParam(ByVal stSrc As String, ByVal stStartTag As String,
    ByVal stEndTag As String, ByVal stKey As String, ByVal stComp As String,
    ByVal stTarget As String) As String

    Dim iStart, iLast As Integer
    Dim iSt, iEn As Integer
    Dim stBuf, stTxt As String

    stBuf = vbNullString

    iStart = 1                          ' 元データの先頭から開始
    Do While (iStart > 0)
        System.Windows.Forms.Application.DoEvents()

        ' 開始タグを探す
        iSt = InStr(iStart, stSrc, stStartTag, CompareMethod.Text)
        If iSt = 0 Then Exit Do         ' 開始タグが見つからないので終了

        ' 終了タグを探す
        iEn = InStr(iSt, stSrc, stEndTag, CompareMethod.Text)
        If iEn = 0 Then Exit Do         ' 終了タグが見つからないので終了

        ' 開始タグ~終了タグまで文字列を抽出
        iLast = iEn + Len(stEndTag)     ' InStrの位置は検索文字の先頭なので終了タグの文字数分を加算
        stTxt = Mid(stSrc, iSt, iLast - iSt)

        iStart = iLast                  ' 次の開始位置をセットしておく

        ' 抽出文字列からターゲットのパラメータを取得
        stBuf = GetKeyWord(stTxt, stKey & "=")
        If stBuf = stComp Then
            stBuf = GetKeyWord(stTxt, stTarget & "=")
            If stBuf <> vbNullString Then
                Exit Do
            End If
        End If
    Loop

    Return stBuf

End Function

処理内に書かれているGetKeyWordの関数は、文字列からターゲットのパラメータを取得する処理です。
簡単なのでここでは省略します。

| | コメント (0) | トラックバック (0)

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

今回は、取得したHTMLデータを保存/読み込みする処理についてです。
実際にHTMLタグ間のデータを抽出する処理を作成してデバッグする場合、
取得したテキストデータを文字列操作用の関数(Left、Right、Midなど)で操作して壊してしまった時に
簡単に復帰させるためなどに使用します。
このように保存/読み込みの処理を作成しておけば、ネットが接続されていない環境でもデバッグができます。
また、HTMLタグ間のデータを確認する時はプリンタに印刷して見たほうが効率が良い場合もあるので、
そんな時にも簡単に印刷できるので便利です。

'
' 【テキストデータ保存処理】
'
' stTxt  --> 保存するテキストデータ
' stFile --> 保存ファイル名
'
Public Sub TextSave(ByVal stTxt As String, ByVal stFile As String)

    Dim iFileNo As Integer

    On Error GoTo ErrorHandler

    iFileNo = FreeFile()
    FileOpen(iFileNo, stFile, OpenMode.Output)
    PrintLine(iFileNo, stTxt)
    FileClose(iFileNo)

    Return

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

End Sub

'
' 【テキストデータ読み込み処理】
'
' stTxt  --> 読み込んだデータを格納する文字列データ
' stFile --> 読み込みファイル名
'
Public Sub TextLoad(ByRef stTxt As String, ByVal stFile As String)

    Dim iFileNo As Integer
    Dim stTmp As String

    On Error GoTo ErrorHandler

    iFileNo = FreeFile()
    FileOpen(iFileNo, stFile, OpenMode.Input)
    stTxt = vbNullString
    Do While Not EOF(iFileNo)
        System.Windows.Forms.Application.DoEvents()
        stTmp = LineInput(iFileNo)
        stTxt &= stTmp
    Loop
    FileClose(iFileNo)

    Return

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

End Sub

実際の使い方です。

Dim stHtml As String

stHtml = GetHtmlWebBrowser("http://www.takarakuji.mizuhobank.co.jp/index.html")
Call TextSave(stHtml, "保存ファイル名")
Call TextLoad(stHtml, "読み込みファイル名")

| | コメント (0) | トラックバック (0)

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

しばらくロトの当せんデータを自動取得する方法について書きたいと思います。
使用している開発環境は、Microsoft Visual Basic 2005 です。
まず最初にデータ取得の大まかな方法です。

① メインページ "http://www.takarakuji.mizuhobank.co.jp/index.html"を取得する。
② 取得したメインページのデータからロト6、ミニロト関連のパラメータを抽出して、最新の当せんデータを取得する。
③ メインページの「過去の当せん番号」からロト6、ミニロトの当せんデータを取得する。

本当に大まかにしか書いていませんが、実際には取得したHTMLのデータをファイルに保存しておいて、
必要な時にそのファイルを読み出してHTMLタグ間のデータを抽出して処理する事の繰り返しになります。


第1回目はメインページの取得処理についてです。
.NET FrameworkのWebBrowserクラスを使用した処理です。

Public bDocEnd As Boolean               ' ドキュメントの読み込み終了フラグ

Public Sub WbEndDocument(ByVal sender As Object, ByVal e As WebBrowserDocumentCompletedEventArgs)

    bDocEnd = True

End Sub

' HTML取得(WebBrowser)
Public Function GetHtmlWebBrowser(ByVal stURL As String) As String

    Dim stBuf As String
    Dim Wb As New WebBrowser()

    AddHandler Wb.DocumentCompleted, New WebBrowserDocumentCompletedEventHandler(AddressOf WbEndDocument)

    bDocEnd = False
    Wb.Url = New Uri(stURL)

    ' 完了待ち
    Do While True
        System.Windows.Forms.Application.DoEvents()
        If bDocEnd = True Then
            Exit Do
        End If
    Loop

    RemoveHandler Wb.DocumentCompleted, New WebBrowserDocumentCompletedEventHandler(AddressOf WbEndDocument)

    stBuf = Wb.Document.Body.InnerHtml
    Wb.Dispose()

    Return stBuf

End Function

呼び出し側の処理は下記のようになります。

Dim stHtml As String

stHtml = GetHtmlWebBrowser("http://www.takarakuji.mizuhobank.co.jp/index.html")

これで取得したHTMLデータがstHtmlに格納されます。

| | コメント (0) | トラックバック (0)

ロト、いつかは当たるかな?

ミニロト、ロト6の予想は、パソコンでプログラムを作って予想しています。
みずほ銀行の宝くじ当せん案内ホームページから過去の当せん番号を自動取得するプログラムを作成して、
そのデータを元に独自の解析、予想をします。
でも当たらない(笑)

規則性なんてあるんでしょうか?
ロト6では、数字24の出現率が低い、数字30の出現率が高いという傾向があります。
これはある程度の参考になります。でもこれだけでは購入の組み合わせを決められません。

最近少し感じているのは、出現数字の1ケタ目の数字が同じ組み合わせになるという点です。

【第346回~第350回までのロト6当せん数字】

00346 04 09 11 12 32 38
00347 08 20 23 27 32 33
00348 04 05 06 27 36 38
00349 08 13 15 19 20 30
00350 13 18 25 26 29 40

例えば、ロト6の346回~350回までの当せん数字では、

346回 = 12 32
347回 = 23 33
348回 = 06 36
349回 = 20 30

というような感じで1ケタ目が同数字の組み合わせがあります。

まあ、こんな考えで予想が当たれば苦労しないでしょうね(笑)

| | コメント (0) | トラックバック (0)