小胖胖啊 2022-04-05 09:44 采纳率: 0%
浏览 161
已结题

如何实现实时抓取新浪微博内容并同步到qq群中

如题。只要新浪某个人的微博一更新,立刻实现qq群里也同步更新!

  • 写回答

9条回答 默认 最新

  • x10n9 2022-04-08 11:58
    关注
    获得1.00元问题酬金

    只获取最近一条内容,判断消息ID在不在文件中,不在就写入文件并发送QQ消息

    
    # # -*- coding:utf-8 -*-
    # '''
    # 发送微博消息
    # '''
    from time import sleep
    import win32gui
    import win32con
    import win32clipboard
    import requests
    from urllib.parse import urlencode
    from os import path
    
    
    class CSendQQMsg():
        def __init__(self, friendName, msg):
            self.friendName = friendName
            self.msg = msg
    
        def setText(self):
            win32clipboard.OpenClipboard()
            win32clipboard.EmptyClipboard()
            win32clipboard.SetClipboardData(win32con.CF_UNICODETEXT, self.msg)
            win32clipboard.CloseClipboard()
    
        def sendmsg(self):
            self.setText()
            hwndQQ = win32gui.FindWindow(None, self.friendName)
            if hwndQQ == 0:
                print('未找到qq对话框')
                return
            win32gui.SendMessage(hwndQQ, win32con.WM_PASTE, 0, 0)
            win32gui.SendMessage(hwndQQ, win32con.WM_KEYDOWN, win32con.VK_RETURN, 0)
    
    
    class Weibo():
        def __init__(self, userid):
            self.base_url = 'https://m.weibo.cn/api/container/getIndex?'
            self.headers = {
                'Host': 'm.weibo.cn',
                'Referer': 'https://m.weibo.cn/u/3549916270',
                'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36',
                'X-Requested-With': 'XMLHttpRequest',
            }
            self.userid = userid
    
        def get_page(self):
            params = {
                'type': 'uid',
                'value': self.userid,
                'containerid': '107603' + str(self.userid),
                'page': 1
            }
            url = self.base_url + urlencode(params)
            try:
                response = requests.get(url, headers=self.headers)
                if response.status_code == 200:
                    return response.json()
            except requests.ConnectionError as e:
                print('Error', e.args)
    
        def parse_page(self):
            if self.get_page():
                items = self.get_page().get('data').get('cards')
                id = items[0].get('mblog').get('id')
                text = items[0].get('mblog').get('text')
                return id, text
    
    
    if __name__ == '__main__':
        friendName = '灰丶'  # QQ用户名
        weibo = Weibo('3549916270')  # 微博用户ID
        id, text = weibo.parse_page()
        qq = CSendQQMsg(friendName, text)
        while True:
            if not path.exists('output.txt'):
                with open('output.txt', 'a') as f:
                    f.write(id)
                qq.sendmsg()  # 发送QQ消息
            else:
                with open('output.txt', 'r', encoding='utf-8') as f:
                    data = f.read()
                if id not in data:
                    with open('output.txt', 'a') as f:
                        f.write(id)
                    qq.sendmsg()
                else:
                    print("微博内容id已在文件中")
            sleep(10)
    
    
    
    

    使用示例:
    需要打开QQ对话框

    img

    img

    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 4月13日
  • 创建了问题 4月5日

悬赏问题

  • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)
  • ¥20 Python安装cvxpy库出问题
  • ¥15 用前端向数据库插入数据,通过debug发现数据能走到后端,但是放行之后就会提示错误
  • ¥15 python天天向上类似问题,但没有清零
  • ¥30 3天&7天&&15天&销量如何统计同一行
  • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
  • ¥15 C#调用python代码(python带有库)
  • ¥15 活动选择题。最多可以参加几个项目?
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题