ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【上班摸鱼】聊天机器人定时发送微博热搜

2021-09-21 10:33:05  阅读:221  来源: 互联网

标签:hotmessage name url 微信 微博 摸鱼 定时 message 微博热


【上班摸鱼】聊天机器人定时发送微博实时热搜新闻

序言

办公室总有一些人工作做的好,资讯掌握也不少,且总能第一时间获取最新资讯,某房地产公司基金快爆雷了,某男星出轨女星出轨。
图1
作为搬砖能手的我们,虽然速度快,力气大,可没有别人大把的时间看微博新闻,我们有的只是无穷尽聊天工具,以及各种催办事项的机器人。有没有一款功能能定时推送微博各种资讯以及各种新闻呢,且还能各种扩展,最主要是能独立修改配置。终于屌丝的我在周末不断尝试后,终于使用爬虫+ci定时触发的方式搞定了,用起来还不错。有兴趣同学可以尝试下
效果如下:
图1
接下来给大家讲讲如何实现。

实现框架

该功能根据功能拆分,分为三个步骤,分别为python微博爬虫以及数据处理、企业微信机器人数据发送,CI定时构建出发

  • 微博爬虫
    1、python获取10条微博最新资讯
    2、bs4包对最新的数据网页进行解析
    3、过滤当前微博推广的热搜
    4、构建适企业微信机器人markdown数据
  • 企业微信机器人
    1、实现根据企业微信机器人接口进行请求方法
  • CI定时触发
    1、使用coding提供的免费ci构建执行python脚本
    2、设置该构建job的定时任务

具体实现

python实现脚本

  • 数据解析以及组装
    根据微博首页地址“https://s.weibo.com/top/summary?cate=realtimehot” ,分析对我们有用的数据字段,我们可以根据标签以及属性的方式找到相关的关键字,同时定义一条微博结构应该包含如下几个部分:
    1、ranking 排行
    2、message 具体的消息内容
    3、url 该条消息的超链接地址
    4、star 点赞数
    剩下的就可以通过该方式获取微博数据,具体的代码实现如下:
    图1
    图1
    def get_hot_message_from_weibo(self,message_num=10):
        '''
        从https://s.weibo.com/top/summary?cate=realtimehot获取热搜,热搜一小时更新一次
        :return: 返回字典类型,{title:标题,girlurl:图片地址
        '''
        self.url = "https://s.weibo.com/top/summary?cate=realtimehot"
        htmltext=self.get(self.url).text
        soup = BeautifulSoup(htmltext,'html.parser')
        hothtmls=soup.findAll(name="tr", attrs={"class" :""})
        hotsum = len(hothtmls)
        #传入长度超过热搜长度,返回为空
        hotmessages = []
        if message_num > hotsum:
            return dict()
        for hothtml in hothtmls:
            if hothtml.find(name='td',attrs={"class" :"td-01"}).text.strip()=='' or not hothtml.find(name='td',attrs={"class" :"td-01"}).text.strip().isdigit():
                continue
            hotmessage = dict()
            hotmessage['ranking'] = hothtml.find(name='td', attrs={"class": "td-01"}).text
            hotmessage['message'] = hothtml.find(name='a').text
            hotmessage['url'] = 'https://s.weibo.com/'+hothtml.find(name='a').attrs['href']
            hotmessage['star'] = hothtml.find(name='span').text
            hotmessages.append(hotmessage)
            #热点消息支持10条
            message_num-=1
            if message_num <1:
                break
        return hotmessages
  • 数据转markdown格式
    我先尝试在微信机器人修改好markdown的格式,该部分需要大家自由发挥格式,再把相应的格式转换为python脚本。具体的脚本参考如下:
    图1
    def deal_message_to_markdown(self,hotmessages=None):

        '''
        处理各种途径消息
        :param messages:
        :return:
        '''
        message='### 实时热搜\r\n\
<font color="comment">时间:%s</font>\r\n'%time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
        for hotmessage in hotmessages:
            message+='> [%s.%s](%s) <font color=\"warning\">%s</font>\r\n'%(hotmessage['ranking'],
                                             hotmessage['message'],
                                             hotmessage['url'],
                                             hotmessage['star'])
        return message

企业微信发送

内容比较简单,直接参考代码

    def send_wechart(self,wechart_url,msg=None):
        '''
        企业微信发送图片资源消息
        :param wechart_url: 企业微信机器人地址
        :param msg: 发送资源消息
        :return:
        '''
        header = {
            'Content-Type': 'application/json'
        }
        data = {
            "msgtype": "markdown",
            "markdown": {
                "content": msg
            }
        }
        respone = requests.post(url=wechart_url, headers=header, json=data)
        return respone

定时执行脚本CI

  • 进入coding平台(https://coding.net/) ,创建项目
  • 上传代码到git仓库
    图4
  • 进入持续集成平台,创建ci job
    图5
  • 复制pipline脚本到构建任务
    图6
  • 设置定时构建
    图6

效果如下:

image

标签:hotmessage,name,url,微信,微博,摸鱼,定时,message,微博热
来源: https://www.cnblogs.com/package/p/15316091.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有