上篇讲到已经得到了需要爬取的商品信息,还需要怎么通过微信自动化发送出去。
本来想使用web版微信,使用ichat模块,尝试了一番发现,竟然已经被官方给封了,那只能通过微信window版尝试自动化发送。
首先需要打开微信windows版,然后把我们需要的发送的聊天窗口,单独打开,不能合并在一起
不然会检测不到窗口,如图:
def FindWindow(title_name):
win = win32gui.FindWindow(None, title_name)
print("find the window:%x" % win)
if win != 0:
win32gui.ShowWindow(win, win32con.SW_SHOWMINIMIZED) #enable and minimize window
win32gui.ShowWindow(win, win32con.SW_SHOWNORMAL) #enable and show window
win32gui.ShowWindow(win, win32con.SW_SHOW) #enable window
win32gui.SetWindowPos(win, win32con.HWND_TOPMOST, 100, 100, 300, 300, win32con.SWP_SHOWWINDOW)
win32gui.SetForegroundWindow(win) # get control
time.sleep(1)
else:
print('please note:cannot find [%s] this person(or group),please activate the window!'%title_name)
exit()
打开windows的剪贴板,先清空再将文本复制在剪贴板里,文本格式为:CF_UNICODETEXT
图片的格式为: CF_DIB
def cp_txt_clipboard(txt): #place text file to clipboard
clipboard.OpenClipboard()
clipboard.EmptyClipboard()
clipboard.SetClipboardData(win32con.CF_UNICODETEXT,txt)
clipboard.CloseClipboard()
def cp_pic_clipboard(img): #place pic file to clipboard
clipboard.OpenClipboard()
clipboard.EmptyClipboard()
clipboard.SetClipboardData(win32con.CF_DIB,img)
clipboard.CloseClipboard()
通过模拟这2个组合键,把需要粘贴的txt放到聊天窗口并发送
def ctrl_v():
win32api.keybd_event(17,0,0,0) #ctrl键位码是17
win32api.keybd_event(86,0,0,0) #v键位码是86
win32api.keybd_event(86,0,win32con.KEYEVENTF_KEYUP,0) #释放按键
win32api.keybd_event(17,0,win32con.KEYEVENTF_KEYUP,0)
def alt_s():
win32api.keybd_event(18, 0, 0, 0) #Alt
win32api.keybd_event(83,0,0,0) #s
win32api.keybd_event(83,0,win32con.KEYEVENTF_KEYUP,0) #释放按键
win32api.keybd_event(18,0,win32con.KEYEVENTF_KEYUP,0)
def send_txt(txt): #place text file to clipboard
cp_txt_clipboard(txt)
ctrl_v()
alt_s()
time.sleep(1)
def send_pic(pathfile):
img = Image.open(pathfile)
output = BytesIO()
img.convert("RGB").save(output, "BMP")
data = output.getvalue()[14:]# remove bmp file header
output.close()
cp_pic_clipboard(data)
ctrl_v()
alt_s()
time.sleep(1)
发送消息大致流程就是这样了,文字和图片的发送过程也都已经准备就绪。
def main():
title_name='File Transfer'#单独打开,好友名称
get_windows(title_name)
url_data = get_meiguang()
index = 0
for i in url_data:
send_pic('%s.jpg'%str(index))
index = index + 1
send_txt(i['TaoBaoTitle'])
send_txt(i['Recommend'])
send_txt(i['koulin'])
time.sleep(5)
简单定义一个main函数,然后直接调用,写的比较粗糙,只是实现可基础功能,还可以增加更多功能,让它变得更加智能,跟人性化。
后续还有时间再继续优化优化。。。