Python從券商客戶端獲取持倉數據(自動截圖+圖像識別)

有時候我們想要從券商的客戶端獲取自己的持倉數據,但一般我們得不到接口。本蒟蒻摸索後,找到了一個應該可行的實驗方法。
該內容不是很完善,但是可以算是一個思路,僅供參考。

其他軟件的數據應該也可以通過這種方式獲得。

思路:用spy++獲取窗口句柄,再截圖,最後圖像識別,得到數據。
最終可以執行,但圖像識別的效果不是很好。有優化空間。

SPY++的內容有時間再補上。

#對後臺窗口截圖
import win32gui, win32ui, win32con
from ctypes import windll
from PIL import Image
import pytesseract

#獲取後臺窗口的句柄,注意後臺窗口不能最小化
hWnd = win32gui.FindWindow(None,"一創智富通金融終端V8.08 - [行情報價-滬深A股]") #窗口的類名可以用Visual Studio的SPY++工具獲取
#子窗口的句柄,從SPY++中查看,應該也可以根據名稱自動獲取,未嘗試
hWnd=int('00011C40',16)
left, top, right, bot = win32gui.GetWindowRect(hWnd)#獲取窗口的大小和位置
width = right - left
height = bot - top

#下面是截圖的內容,網上有介紹,本蒟蒻也不是很懂,但是可以運行
hWndDC = win32gui.GetWindowDC(hWnd)
mfcDC = win32ui.CreateDCFromHandle(hWndDC)
saveDC = mfcDC.CreateCompatibleDC()
saveBitMap = win32ui.CreateBitmap()
saveBitMap.CreateCompatibleBitmap(mfcDC,width,height)
saveDC.SelectObject(saveBitMap)
saveDC.BitBlt((0,0), (width,height), mfcDC, (0, 0), win32con.SRCCOPY)
###最後一個int參數:0-保存整個窗口,1-只保存客戶區。如果PrintWindow成功函數返回值爲1
result = windll.user32.PrintWindow(hWnd,saveDC.GetSafeHdc(),0)
print(result) #PrintWindow成功則輸出1
saveBitMap.SaveBitmapFile(saveDC,"img_Winapi.bmp")


#文字識別
text=pytesseract.image_to_string(Image.open('img_Winapi.bmp'),lang='script/HanS' )#設置爲中文文字的識別
print(text)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章