1 from time import sleep
2 import random,pyperclip,os
3 import pyautogui
4 from openpyxl import load_workbook
5 import datetime
6 import tkinter as tk
7
8 path = os.getcwd()+'\\URL链接.xlsx'
9 wb = load_workbook(path)
10 ws = wb.worksheets[0]
11
12 sleep(1)
13 pyautogui.FAILSAFE = True
14
15 width, height = pyautogui.size()
16 print(width,height)
17
18 cur_x, cur_y = pyautogui.position()
19 print(cur_x,cur_y)
20
21 def opation():
22 def control(url,i,m):
23 pyautogui.click(x = 85, y = 1060, duration=2)#移动鼠标任务栏微信
24 pyautogui.click()#当前位置点击
25 sleep(1)
26 pyautogui.click(x=1063, y=744, duration=2) # 移动鼠标输入框
27 pyautogui.click() # 当前位置点击
28
29 pyautogui.typewrite(url, interval=0.25) # 输入文本
30 pyautogui.press('space')
31 sleep(1)
32 pyautogui.press('enter')
33 # pyautogui.click(x=792, y=569, duration=2) # 移动鼠标发送
34 # pyautogui.click() # 当前位置点击
35 sleep(1)
36 pyautogui.click(x=1108, y=626, duration=2) # 移动鼠标点击链接
37 pyautogui.click() # 当前位置点击
38
39 sleep(2)
40 pyautogui.click(x = 1258, y = 300, duration=2)#移动鼠标文章空白位置
41 pyautogui.click()#当前位置点击
42
43 sleep(random.randint(3,6))
44 pyautogui.hotkey('ctrl', 'a') # 组合按键(Ctrl+A)#全选
45 sleep(1)
46 pyautogui.hotkey('ctrl', 'c') # 组合按键(Ctrl+C)#复制
47 sleep(1)
48 text = pyperclip.paste()
49 # print(text)
50 if "阅读 "in text:
51 index = text.index("阅读 ")
52 click = text[index:]
53 for kw in click.split("\n"):
54 if "阅读 " in kw:
55 print("阅读:", kw.replace("阅读", "").strip())
56 # reads.append(kw.replace("阅读", "").strip())
57 ws.cell(i+1,3+m).value = kw.replace("阅读", "").strip()
58 elif "在看" in kw:
59 print("在看:", kw.replace("在看", "").strip())
60 sleep(1)
61 pyautogui.click(x=1260, y=150, duration=2) # 移动鼠标"关闭"位置
62 pyautogui.click() # 当前位置点击 #关闭
63 # print(text)8CAA
64 wb.save(path)
65
66 for m in range(int(e1.get())):
67 now_time = datetime.datetime.now().strftime('%H:%M:%S') # %Y-%m-%d %H:%M:%S
68 ws.cell(1,3+m).value =now_time#监控链接的时间保存
69 for i in range(1,ws.max_row):
70 # print(ws.cell(i+1,2).value)
71 # if len(ws.cell(i+1,2).value):
72 control(ws.cell(i+1,2).value,i,m)
73
74
75 #删除原来的所有图片文件
76 file_names = os.listdir(os.getcwd() + '\\img\\')
77 for file_name in file_names:
78 os.remove(os.getcwd() + '\\img\\' + file_name)
79 #可视化
80 import matplotlib.pyplot as plt
81 x_time = []
82 for i in range(3, ws.max_column + 1):
83 x_time.append(ws.cell(1, i).value)
84 print(x_time)
85 for i in range(1, ws.max_row):
86 y_read = []
87 for j in range(3, ws.max_column + 1):
88 y_read.append(ws.cell(i + 1, j).value)
89 plt.plot(x_time, y_read)
90 plt.title(ws.cell(i + 1, 2).value)
91 plt.savefig(os.getcwd() + '\\img\\' + str(i) + '.jpg')
92 plt.show()
93
94 l2 = tk.Label(win, text='监控完成,画图已保存')
95 l2.pack()
96
97 if __name__ == '__main__':
98 win = tk.Tk()
99 win.title('监控微信文章阅读量')
100 win.geometry('300x400')
101 l1 =tk.Label(win,text='输入需要监控的多少个时间间隔:')
102 l1.pack()
103 e1 = tk.Entry(win,show=None)
104 e1.pack()
105 # l2 = tk.Label(win, text='输入间隔的时长:(分钟)')
106 # l2.pack()
107 # e2 = tk.Entry(win, show=None)
108 # e2.pack()
109 #
110 b = tk.Button(win,text='开始监控',width=12,height=1,command=opation)
111 b.pack()
112
113 win.mainloop()