我在自己教学的四个班里建了三个微信群,每个群大约有50-90人。我计划每天给学生双送双语每日一句,既让学生坚持学习英语,也传递给他们正能量,在后疫情时代保持积极向上、奋发有为的状态。然而,从拷贝金山词霸或者海词的每日一句,再到打开微信,找到三个群,把信息逐一复制进去,过程相当的费时费力。于时,我就想借助于强大的Python实现每日一句的在线抓取,在微信中找到发送的对象,然后逐个发送。
功能:微信群发金山或者海词上的每日一句到指定微信群或者个人

需要注意时,运行程序时,微信需要打开,并最小化,不然可能无法自动打开界面。
- from tkinter import Entry,Button,END,Label,Text,Checkbutton,Tk,StringVar,IntVar
- from tkinter import messagebox
- from wxauto import WxUtils,WeChat
- from tkinter.filedialog import askopenfilename
- import requests
- from bs4 import BeautifulSoup
-
- root = Tk()
- # 设置窗口前段显示
- root.wm_attributes('-topmost',1)
- #设置居中显示
- screenwidth = root.winfo_screenwidth()
- screenheight = root.winfo_screenheight()
- width = 730
- height = 420
- #size = "%dx%d+%d+%d" % (width, height, (screenwidth - width) / 2, (screenheight - height) / 2)
- size = "%dx%d+%d+%d" % (width, height, 350, 230)
- root.geometry(size)
- # 设置窗口标题及大小
- root.title('每日一句发送器1.0|By Gordon')
- #设置接受UI界面中Label和它的位置
- var = StringVar()
- var.set('Tip:请先选择要发送的微信对象')
- url_input=Label(root,textvariable=var,width=32,height=1,font=("微软雅黑",12))
- url_input.grid(row=0,column=0,columnspan=5)
- # 设置搜索框
- t_url = Entry(root,width=50,font=("微软雅黑",12))
- t_url.insert(0,"请把发送对象微信名称输入到names.txt, 然后点击打开文件..")
- t_url.grid(row=1,column=0,columnspan=4,padx=5)
- t_read = Text(root,width=50,height=10,font=("微软雅黑",12))
- t_read.grid(row=3,column=0,columnspan=4,padx=5)
- checkVar1 = IntVar()
- checkVar2 = IntVar()
- c1 = Checkbutton(root, text = "金山词霸", font=("微软雅黑",11), variable = checkVar1, onvalue = 1, offvalue = 0, height=1,width = 8)
- c1.grid(row=2,column=0)
- c2 = Checkbutton(root, text = "海词", font=("微软雅黑",11), variable = checkVar2, onvalue = 1, offvalue = 0, height=1,width = 8)
- c2.grid(row=2,column=1)
- def main():
- def get_txt(filepath): #获取发送对象
- ls=[]
- try:
- with open(filepath,"r",encoding="utf-8") as f:
- ls=[line.strip() for line in f.readlines() if line.strip()!=""]
- except Exception as exc:
- messagebox.showwarning('Warning', f'{exc}')
- t_url.delete(0,END)
- return ls
-
- def b1_prog(event=None): #打开names.txt文件,并显示在Text文本框中
- t_url.delete(0,END)
- t_read.delete("1.0", "end")
- file_path=askopenfilename(title='选择文件',filetypes=[('TXT文件','*.txt')])
- text_list=get_txt(file_path)
- t_url.insert("insert",file_path)
- for i in text_list:
- t_read.insert("insert",i+"\n")
- var.set("以下是您要发送的对象,请核对信息!")
- return file_path
- b1 = Button(root,text="选择对象",width=8,height=1,font=("微软雅黑",12),command=b1_prog)
- b1.grid(row=1,column=4)
-
- def jinshan():#获取金山词霸每日一句
- url = 'http://open.iciba.com/dsapi/'
- res = requests.get(url)
- content = res.json()['content'] + res.json()['note']
- return content
- def haici():#获取海词每日一句
- url2=r"http://dict.cn"
- resp = requests.get(url2)
- soup = BeautifulSoup(resp.text,"html.parser")
- htm=soup.find("div",class_="daily_sentence")
- sen=htm.text.strip().split("\t\t\t")[2] #split("\n\t")[2].strip()
- return sen
- def get_sentence():# 获取每日一句信息
- msg="每日一句:"
- if checkVar1.get() ==1 and checkVar2.get() ==1:
- t_read.delete("1.0", "end")
- msg=msg+jinshan()+"\n"+haici()
- elif checkVar1.get() ==1 and checkVar2.get() ==0:
- t_read.delete("1.0", "end")
- msg=msg+jinshan()
- elif checkVar1.get() ==0 and checkVar2.get() ==1:
- t_read.delete("1.0", "end")
- msg=msg+haici()
- else:
- messagebox.showwarning("错误信息","请选中金山词霸或者海词")
- return msg
- def b2_prog():# 显示每日一句信息,校对并准备发送。
- msgs=get_sentence()
- for m in msgs:
- t_read.insert('insert',m)
- var.set("以下是您要发送的每日一句,请核对信息!")
- b2 = Button(root,text="获取句子",width=8,height=1,font=("微软雅黑",12),command=b2_prog)
- b2.grid(row=2,column=4)
- def wechat(who,msg):#查询发送对象
- wx = WeChat()
- # 获取会话列表
- wx.GetSessionList()
- for w in who:
- wx.ChatWith(w) # 打开`文件传输助手`聊天窗口
- wx.SendMsg(msg) # 向`文件传输助手`发送消息:你好~
- def send_txt(): # 发送信息
- filepath=t_url.get()
- if not filepath.endswith(".txt"):
- messagebox.showwarning("错误信息","请先打开文件!")
- else:
- who=get_txt(filepath)
- msgs=get_sentence()
- t_read.delete("1.0", "end")
- wechat(who,msgs)
- messagebox.showwarning("成功信息","您的信息已经发送成功!")
- b3 = Button(root,text="开始发送",width=8,height=1,font=("微软雅黑",12),command=send_txt)
- b3.grid(row=3,column=4,pady=20)
- root.mainloop()
- main()
Python操作微信实现信息群发
Python实现英语每日一句微信群发
未来实现文本信息、文件、视频、音频等多个文件的批量微信群发功能,进一步优化流量,提升工作效率。
大家如果有什么好的建议也欢迎提出来。
关注我,一个喜欢Python编程和英语翻译的文科生,带给你不一样的学习体验。