吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 6718|回复: 20
收起左侧

[Python 转载] 爬取并提取某头条的视频链接

  [复制链接]
wuse111 发表于 2020-9-12 16:10
第一次发贴,写的不好请谅解,如果有更优化的处理方式请提出交流,代码仅供学习和交流
以下是正文和代码:

1.进入某头条的官网,目前是叫阳光宽频网,就提取首页的内容

2.通过分析出json数据的链接,并的得到出首页数据的链接:http://www.365yg.com/xigua/feed/?ChannelID=6797027941&Count=10&UseHQ=true(其中这个channelid是固定的,count代表提取的数量)

取首页数据链接

取首页数据链接


3.然后得到的是json数据格式,通过提取key值data的内容再提取key值raw_data的内容,得到的数据很明显是base64加密的方式,直接进行base64的解密,然后得到详细的标题,groupid还有一些其他的内容等等。

提取raw_data

提取raw_data


base64解密后数据

base64解密后数据


4.进入单个视频,通过抓包发现链接的提取有两种方式,代码会进行具体说明,第一种提取方式就不上操作了,第二种提取方式需要再request headers里面加上一个协议头才能进行访问,这个协议头的内容在第3条中能提取出来

协议头

协议头


5.再优化一下代码,然后减少报错。

具体的操作截图和代码如下,目前所提取的视频链接都是自带声音,那种提取视频和音频分割的没有写,不过思路是一样的,提取出来,然后进行合成:

[Python] 纯文本查看 复制代码
import requests
from base64 import b64decode
import json


def get_url(num):
    headers = {
    "User-Agent": "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50"
    }
    res = requests.post(f'http://www.365yg.com/xigua/feed/?ChannelID=6797027941&Count={num}&UseHQ=true',
                        headers=headers,
                        allow_redirects=False).json()
    data_list = []
    base_list = res['Data']
    for base in base_list:
        base = base['raw_data']
        raw = b64decode(base).decode()
        raw = json.loads(raw)
        title = raw['title']
        group_id = raw['group_id']
        video_id = raw['video_id']
        token = raw['play_biz_token']
        auth_token = raw['play_auth_token']
        #第一种,通过group_id提取视频的链接

        # res = requests.post(f'http://www.365yg.com/xigua/play/?GroupID={group_id}', headers=headers,
        #                     allow_redirects=False).json()
        # video_list = json.loads(res['InformationResponse']['Info']['PackedJson'])['video_play_info']
        # video_list = json.loads(video_list)['video_list']

        #第二种,通过提取video_id和两个token,提取视频链接

        url = f'http://vas.snssdk.com/video/openapi/v1/?format_type=dash&action=GetPlayInfo&video_id={video_id}&nobase64=false&ptoken={token}&vfrom=xgplayer'
        headers.update({'Authorization': auth_token})
        res = requests.get(url, headers=headers).json()

        #这下面的提取是两种方法通用
        try:
            video_list = res['data']['dynamic_video']['dynamic_video_list']
            # print("dv_list", video_list)
            for video in video_list:
                video_type = video['definition']
                video_url = b64decode(video['main_url']).decode()
                # print(title + ':' + video_type + '|' + video_url)
                data = title, video_type, video_url
                data_list.append(data)
        except TypeError:
            video_list = res['data']['video_list']
            # print("v_list", video_list)
            for i in range(1, 5):
                try:
                    video_type = video_list[f'video_{i}']['definition']
                    video_url = b64decode(video_list[f'video_{i}']['main_url']).decode()
                    # print(title + ':' + video_type + '|' + video_url)
                    data = title, video_type, video_url
                    data_list.append(data)
                except KeyError:
                    pass
        finally:
            pass
    return data_list


觉得不错的朋友们可以给个鼓励,有错误也请各位朋友指正,谢谢了

免费评分

参与人数 11吾爱币 +14 热心值 +9 收起 理由
佛说 + 1 我很赞同!
huazai_xp + 1 热心回复!
number0 + 1 请勿灌水,提高回帖质量是每位会员应尽的义务!
在线小学生 + 1 + 1 谢谢@Thanks!
dgy + 1 热心回复!
myskyjie + 1 + 1 谢谢@Thanks!
sjminh + 1 用心讨论,共获提升!
lilips + 1 + 1 我很赞同!
苏紫方璇 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
pdc9911 + 1 + 1 谢谢@Thanks!
miekioon + 1 + 1 热心回复!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| wuse111 发表于 2020-9-16 20:58
sjminh 发表于 2020-9-13 14:55
楼主可以再讲的详细点吗,好像跳过了很多东西,萌新一个看不懂

跳过了分析链接和提取链接的过程,有问题可以私信给我,大家交流学习嘛
地狱龙影 发表于 2020-9-22 20:42
wuse111 发表于 2020-9-19 10:47
可以私信聊一下

大佬,我不会发私信咋整 加个QQ 或 wx可以吗?QQ是258058212 wx是llyemtf
在线小学生 发表于 2020-9-12 19:37
QingYi. 发表于 2020-9-12 20:03
Python还是牛逼的
JIAN_ 发表于 2020-9-12 20:15
感谢分享!
夏天by 发表于 2020-9-12 21:17
感谢分享
hacksz 发表于 2020-9-13 13:14
收藏,感谢分享
bigkingman 发表于 2020-9-13 13:23
非常感谢分享!
cj13888 发表于 2020-9-13 14:27
学习一下,支持你
sjminh 发表于 2020-9-13 14:55
楼主可以再讲的详细点吗,好像跳过了很多东西,萌新一个看不懂
ciker_li 发表于 2020-9-13 23:19
感谢分享
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 09:31

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表