返回列表 上一主題 發帖

[求助] 證交所 買賣日報表查詢系統 資料

[求助] 證交所 買賣日報表查詢系統 資料

證交所 買賣日報表查詢系統 改版了!!
需要先選擇 "一般交易" OR "鉅額交易" 然後輸入股票代號 ,再來輸入驗證碼 , 最後在按下查詢.
然後右邊視窗顯示搜尋結果 and 左邊視窗出現下載csv.
不知是否有高手能改為自動 , 墾請協助.

ScreenHunter_04 Dec. 01 20.27.jpg (73.75 KB)

新版畫面

ScreenHunter_04 Dec. 01 20.27.jpg

ScreenHunter_05 Dec. 01 20.32.jpg (133.41 KB)

搜尋結果

ScreenHunter_05 Dec. 01 20.32.jpg

ScreenHunter_05 Dec. 01 20.27.jpg (12.28 KB)

改版訊息

ScreenHunter_05 Dec. 01 20.27.jpg

或許可以用AutoIT協助,請下載該freeware。
讀一下網路教學。

TOP

不好意思,仔細看一下,還要解圖形文字碼,這已不是我的能力範圍。

TOP

把圖片做二值化處理,還是很多線條無法清除,每次字的位置也不定,功力太淺沒辦法.


Public Declare Function GetClipboardData Lib "user32" (ByVal wFormat As Long) As Long
Public Declare Function CloseClipboard Lib "user32" () As Long
Public Declare Function OpenClipboard Lib "user32" (ByVal hwnd As Long) As Long
Public Declare Function GlobalLock Lib "kernel32" (ByVal hMem As Long) As Long
Public Declare Function GlobalSize Lib "kernel32" (ByVal hMem As Long) As Long
Public Declare Function GlobalUnlock Lib "kernel32" (ByVal hMem As Long) As Long
Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)

Public Const CF_TEXT = 1
Public Const CF_BITMAP = 2
Public Const CF_DIB = 8

Sub 驗證圖()
    Dim img
    Dim CtrlRange
    Dim bytClipData() As Byte
    Dim arr() As String
    Dim ts As Integer
   
    Cells.Clear
    Cells.Font.Size = 4
    Cells.RowHeight = 6
    Cells.ColumnWidth = 0.6
    Cells.Font.Bold = True
    On Error Resume Next
    With CreateObject("InternetExplorer.application")
        .Visible = True
        .Navigate "http://bsr.twse.com.tw/bshtm/bsMenu.aspx"
        Do Until .ReadyState = 4
            DoEvents
        Loop
        
        Set img = .Document.all.tags("img")(1)
        Set CtrlRange = .Document.body.createControlRange()
        CtrlRange.Add img
        CtrlRange.execCommand "Copy", True

        Dim hMem As Long, lpData As Long
        OpenClipboard 0&
        hMem = GetClipboardData(8)
        
        If CBool(hMem) Then
            lpData = GlobalLock(hMem)
            lClipSize = GlobalSize(hMem)
            If lpData <> 0 And lClipSize > 0 Then
                ReDim bytClipData(0 To lClipSize - 1)
                CopyMemory bytClipData(0), ByVal lpData, lClipSize
            End If
            GlobalUnlock hMem
        End If
        CloseClipboard
'        For i = 0 To UBound(bytClipData)
'        Cells(i + 1, 1) = bytClipData(i)
'    Next i
    'Erase arr()
        a1 = bytClipData(0)
        a2 = bytClipData(4)
        a3 = bytClipData(8)
        a4 = lClipSize - a1
        a5 = a4 / a2 / a3

        If a5 < 3 Then
            a1 = lClipSize - a2 * a3
            a5 = 1
        Else
            a5 = Int(a5)
        End If
        ReDim arr(1 To a2 * a3)
        For i = 1 To a2 * a3
            arr(i) = ""
            ts = 0
            'For j = 0 To a5 - 1
            '    ts = ts + Val(bytClipData((i - 1) * a5 + a1 + 2))
            'Next j
            'ts = ts / a5
            ts = Val(bytClipData((i - 1) * a5 + a1 + 2))
            If ts > 220 Then
                arr(i) = 1
            End If
            'If i / a2 = Int(i / a2) Then a1 = a1 + 0
        Next i
        For i = 2 To a3 - 1
            For j = 2 To a2
                Cells(a3 + 1 - i, j) = arr((i - 1) * a2 + j)
            Next j
        Next i
         For i = 2 To a3
            For j = 2 To a2
                p = 0
                For m = -1 To 1
                    For n = -1 To 1
                        p = p + Cells(i + m, j + n)
                    Next n
                Next m
                If p < 3 Then Cells(i, j) = ""    '第一次去雜信
            Next j
        Next i
        For i = 3 To a3
            For j = 3 To a2
                p = 0
                For m = -2 To 2
                    For n = -2 To 2
                        p = p + Cells(i + m, j + n)
                    Next n
                Next m
                If p < 4 Then Cells(i, j) = ""    '第二次去雜信
            Next j
        Next i
'        temp = ""
'        For i = 2 To a2
'            For j = 2 To a3 - 1
'                Cells(a3 + 1, i) = Cells(a3 + 1, i) + Cells(j, i)
'            Next j
'            If Cells(a3 + 1, i) = 0 Then Cells(a3 + 1, i) = ""
'        Next i
       ' .Quit
    End With
   
        Erase arr()
        Erase bytClipData()
        
End Sub

TOP

不知道版上的高手們有沒有更好的方法呢?這還蠻困擾的

TOP

一方面期待神人出現 , 一方面趕緊練功...

TOP

回復 7# snkso

網上一直教大家如何抓
結果大家一窩蜂用程式抓抓抓
聽說是這樣才會被換上驗證碼的

會的人如果再放出範例來
驗證碼要是被換成更難辨識的
根本是自找麻煩
我覺得就算有人會, 也沒人敢放出來

TOP

回復 7# jackyq


   原來是這樣!
感謝大大回覆!

TOP

        靜思自在 : 一個人不怕錯,就怕不改過,改過並不難。
返回列表 上一主題