1。前言大家好,我是程序员二~今天如何使用Python爬虫向微信群发送早间新闻?(详情)但是对于很多人来说,首先,写一个App需要一定的移动开发经验,其次,还要另外写一个无障碍服务应用,这似乎有些难度。本文将介绍另一种解决方案,即:使用上一篇介绍的AutoJS自动发送早间新闻到微信群2.爬虫与服务为了演示方便,这里我们使用百度热搜作为早间新闻的数据源,使用Requests+BeautifulSoup根据热度爬取15篇最热门的文章Dataimportrequestsfrombs4importBeautifulSoupdefbaidu_top_tipic():"""百度热搜"""requests_page=requests.get('http://top.baidu.com/buzz?b=1&c=513&fr=topbuzz_b42_c513')soup=BeautifulSoup(requests_page.text,"lxml")#querysoup_text=soup.find_all("div",class_='c-single-text-ellipsis',text=True)top_list=[]forindex,textinenumerate(soup_text):top_list.append((str(index+1)+","+text.string.strip()))#取15条最受欢迎的数据返回'\n'.join(top_list[:15])然后,使用FastAPI编写获取早间新闻的API,部署在云服务器上(这里我们以CentOS作为n示例)importuvicornfromfastapiimportFastAPIfromevery_newsimport*#pip3installuvicorn#pip3installfastapi#instantiateapp=FastAPI()#DailyNews@app.get("/news")asyncdefrsc_api():msg=get_news()return{"code":200,"msg":msg}if__name__=='__main__':uvicorn.run(app='news_api:app',host="0.0.0.0",port=6789,reload=True,debug=True)最后运行如下命令让服务后台运行#命令行后台运行#日志目录:/news_api.lognohuppython3/xag/news_api.py>/news_api.log2>&1&3.自动发群聊用VSCode写AutoJS脚本首先定义一个发群消息的方法PS:使用click()坐标进行点击操作只适用于Android7.0+//API调用获取新闻数据varurl="http://host:6789/news";//发送群聊名vargroup_name="群聊名";//发送信息到微信群??函数send_wx_msg(group_name,send_msg){//如果休眠,唤醒设备//注意:为了保证低功耗,设置休眠(10s无操作)device.wakeUpIfNeeded()//打开微信app.launch("com.tencent.mm");text("微信").waitFor()//Click进入聊天界面varchat_element_bounds=text(group_name).findOne().bounds();//支持Android7.0+click(chat_element_bounds.centerX(),chat_element_bounds.centerY());睡眠(3000)id("auj").className("EditText").findOne().setText(send_msg)睡眠(3000)//发送一条消息text("Send").click()log("发送成功!")//返回手机桌面back();家();然后,在主线程中开启一个新的线程,调用API接口,获取数据并发送数据//Threadthreads.start(function(){//获取消息http.get(url,{},function(res,err){//Errorif(err){log("抱歉!今天获取新闻失败...")return;}log("今天获取新闻成功!")lethtml=res.body.string();letmsg=JSON.parse(html).msg;send_wx_msg(group_name,msg)});})然后,使用VSCode将源代码导入移动设备。最后选择源文件-右键-更多-定时任务,设置定时任务。图4.最终可以实现每天早上给指定群组发送早报的功能。当然,如果涉及发送多个群聊,只需要使用AutoJS查询多个目标群聊对象+滑动页面遍历发送信息即可。另外,由于服务缺乏无障碍稳定性,可以在设置中设置AutoJS应用服务的优先级,以保证程序的稳定运行。如果觉得文章还不错,请点赞、分享、留言,因为这将是我继续输出更多优质文章力量的最强方式!
