爬虫爬取qq看点视频 您所在的位置:网站首页 qq看点3个字 爬虫爬取qq看点视频

爬虫爬取qq看点视频

2024-06-29 16:32| 来源: 网络整理| 查看: 265

我的上一篇文章有讲到graia机器人配置的问题,这次用他和爬虫实现一个比较有趣的东西 在这里插入图片描述 群友在查看电脑端qq看点的分享视频时会出现这种情况无法查看,但也并不是完全没有办法获取到视频的链接 在这里插入图片描述 mcl中我们可以看到这样的东西,显然这是一个app消息,里面有一些链接

{ "app": "com.tencent.biz.pubaccount.readinjoy", "view": "baseView", "ver": "1.0.0.69", "prompt": "[视频]两星武器+两星圣遗物优菈VS公子!!", "meta": { "data": { "id": "none", "rowkey": "57060ed7437393ah", "uin": "1653490853", "puin": "1001014387914", "nick": "@{uin:1001014387914,nick:月枫Aurora}", "contentJumpUrl": "https:\/\/web.kandian.qq.com\/tpl\/sharePage?kandianshare.html5.qq.com=1&_bid=4563&pgyid=2008&rowkey=57060ed7437393ah&enc_u=uDW52aqCa5WF6tHvmNsoKg==", "avatar": "http:\/\/p.qpic.cn\/kd_face\/ajNVdqHZLLD2TyCdTfAB8ic2l5FswicLVVxrYMLH7Yp6k\/0", "avatarJumpUrl": "https:\/\/kandian.qq.com\/mqq\/vue\/main?_wv=10145&_bid=3302&adfrom=qqshare&x5PreFetch=1&accountId=MTAwMTAxNDM4NzkxNA==", "iconJumpUrl": "mqqapi:\/\/readinjoy\/open?src_type=internal&target=1&version=1", "media": [ { "isVideo": true, "videoDuration": 483, "width": 1920, "height": 1080, "url": "http:\/\/qqpublic.qpic.cn\/qq_public_cover\/0\/0-2453122286-F3BDFB3840A93FAFB76992C8D2C2F84E_vsmcut\/0?busiType=2" } ], "title": "两星武器+两星圣遗物优菈VS公子!!", "type": 2, "isAIO": 1, "appName": "kandian" } } }

在里面可以找到contentJumpUrl,https://web.kandian.qq.com/tpl/sharePage?kandianshare.html5.qq.com=1&_bid=4563&pgyid=2008&rowkey=57060ed7437393ah&enc_u=uDW52aqCa5WF6tHvmNsoKg==这个链接就是我们需要爬取的链接 接下来要寻找视频的直链 在这里插入图片描述

把上面的contentjumpurl输入到浏览器中f12查找可以发现视频的直链在这里 这个请求需要的参数在这里 {“user”:{“account”:{“account_type”:1,“user_id”:“0”,“req_recommend_flag”:0}},“device”:{“app_version”:“0”,“qua”:"",“os”:3,“device_id”:"",“terminal_id”:"",“app_type”:3,“guid”:"",“ip”:"",“network”:0},“share_rowkey”:“57060ed7437393ah”,“page”:{“tab_id”:"",“rowkeys”:[“57060ed7437393ah”],“load_more_count”:0,“refresh_count”:0,“load_type”:1},“cookie”:"",“ext”:{}} 我们要获取的是这个rowkeys和keyws(内容一样) 这个参数可以在之前的contentJumpUrl里找到 所以我们要做的就是用mcl获取卡片信息里的url里的rowkeys参数然后爬取视频直链 代码如下

# -*- coding: UTF-8 -*- import json from graia.broadcast import Broadcast, BaseEvent from graia.application.entry import * from graia.application.message.elements.internal import * import requests from graia.scheduler import timers import graia.scheduler from graia.application.event.mirai import FriendRecallEvent, GroupRecallEvent accout=234654570 loop = asyncio.get_event_loop() bcc = Broadcast(loop=loop) sche = graia.scheduler.GraiaScheduler(loop=loop, broadcast=bcc) app = GraiaMiraiApplication( broadcast=bcc, connect_info=Session( host="http://localhost:10008", # 填入 httpapi 服务运行的地址 authKey="yszzsyszzs", # 填入 authKey account=accout, # 你的机器人的 qq 号 websocket=True # Graia 已经可以根据所配置的消息接收的方式来保证消息接收部分的正常运作. )) def qqkandian(key): url = "https://cgi.kandian.qq.com/trpc.tkdqq.kd_share_video_recommend.ShareVideoRecommend/GetFeed?g_tk=0&bkn=0" data = {"user": {"account": {"account_type": 1, "user_id": "0", "req_recommend_flag": 0}}, "device": {"app_version": "0", "qua": "", "os": 3, "device_id": "", "terminal_id": "", "app_type": 3, "guid": "", "ip": "", "network": 0}, "share_rowkey": key, "page": {"tab_id": "", "rowkeys": [key], "load_more_count": 0, "refresh_count": 0, "load_type": 1}, "cookie": "", "ext": {}} return requests.post(url, json=data).json()['result']['feedData']['feeds'][0]['card']['feed']['tweet']['post']['video']['url'] @bcc.receiver("FriendMessage") async def friend_message_listener(message: MessageChain, app: GraiaMiraiApplication, friend: Friend): if message.get(App): con=message.get(App)[0].content con=json.loads(con) url=con['meta']['data']['contentJumpUrl'] key=url.split('&')[3].split('=')[1] await app.sendFriendMessage(friend, MessageChain.create([Plain(qqkandian(key))])) app.launch_blocking()

graia的配置可以看我的上一篇文章 运行之后向机器人转发消息就可以看到视频的链接了 在这里插入图片描述



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有