因为我关注的这个公众号文章内容很简单,基本都是纯文字,所以直接全选复制文本就可以了,用pyautogui比selenium还来得快。
摘要:
- 用 pyautogui 控制公众号文章列表的滚动和点击
- 用 pyautogui 发送快捷键全选复制网页文本
- 用 pyperclip 接收剪切板中的文字
特别注意:
- 每次打开新网页或者回到公众号文章列表,都要在网页或控件上再次点击鼠标,否则鼠标焦点可能还在桌面或者别的地方
import pyperclip
import pyautogui,time
def process_clipboard(text):
lines = text.split("\n")
lines[0] = "## " + lines[0]
lines[1] = lines[1].strip() + "," + lines[2]
lines[2] = '\n'
for i in range(1,10):
lines.pop(-1) # 直接删掉文章最后几行
return ("".join(lines),lines[0]+lines[1]) # 返回文章,和标题(用于记录日志)
def work():
# 记住,运行代码之前要把公众号文章列表拉到尾部,直到不出现列表
dest_file = open("D:\\xx\\vuepress\\xx\\xx\\xx\\xxx.md", "a", encoding='utf-8')
pyautogui.click(1336, 1065) # 点击任务栏的微信图标
pyautogui.click(1230, 800) # 点击公众号文章列表灰色区域,使鼠标回到列表控件
pyautogui.scroll(30) # 滚轮向上滚动
time.sleep(1)
i = 0
while i < 109: # 滚动次数,一次处理4篇文章
if i > 0:
pyautogui.click(1230, 800) # 点击公众号文章列表灰色区域,使鼠标回到列表控件
pyautogui.scroll(317) # 一次滚4篇文章,这个高度要自己用 pyautogui.position() 去试出来
time.sleep(0.5)
j = 0
while j < 4:
if j != 0:
# pyautogui.click(1336, 1065)
pyautogui.click(1230, 800) # 点击公众号文章列表灰色区域,使鼠标回到列表控件
time.sleep(0.5)
pyautogui.click(1000, 900 - 130 * j) # 循环点击4篇文章
time.sleep(0.5)
pyautogui.click(1230, 800) # 点击公众号文章列表灰色区域,使鼠标回到列表控件
pyautogui.hotkey('ctrl', 'a') # 快捷键,全选
time.sleep(1)
pyautogui.hotkey('ctrl', 'c') # 快捷键,复制
clipboard_content = pyperclip.paste() # 获取剪切板复制的内容
text = process_clipboard(clipboard_content) # 处理文本
dest_file.write(text[0]) # 把处理后的文本写入文件
print(i*4+j, text[1]) # 打印日志
pyautogui.click(1898, 16) # 关闭网页
j += 1
i += 1
if __name__ == '__main__':
work()
标签:pyautogui,time,lines,列表,公众,文章,click
From: https://www.cnblogs.com/stxz/p/18427189