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)

你可能感兴趣的:(金融科技)