爬虫---爬取b站小视频

597 篇文章 17 订阅
100 篇文章 2 订阅

分析b站小视频

1、进入到抓取链接地址
在这里插入图片描述
2、分析抓取链接内容
通过F12或者抓包工具进行查看我们需要爬取的视频在哪里存放,页面以ajax动态加载的
在这里插入图片描述
3、分析请求内容和请求参数
通过查看请求内容得到这些数据

1、请求的接口地址

2、请求方式为get

3、请求参数为

page_size 显示的个数
next_offset 动态跳转页面
tag  搜索标题
platfrom (应该是pc端)

在这里插入图片描述
在这里插入图片描述
分析了页面内容,那么动手来写代码,爬取视频下来

爬取b站小视频

开始写代码之前呢,我们也要一步一步的来,分清楚每一步都是干什么用的,这样的话才能让我们写的代码更加清除。

1、构建请求信息,请求需要爬取的地址

# 构建请求信息,获取数据信息
def get_json(url,ajax):
    # 构建请求信息
    params = {
        'page_size':10,
        'next_offset': ajax,
        'tag':'今日热门',
        'platform':'pc'
    }
    # 防止请求失败
    try:
        html = requests.get(url,params=params,headers=headers).json()
        return html
    except BaseException:
        print('页面加载失败')

2、进行访问链接,下载视频

# 获取视频信息
def get_video(viedeo_url,path):
    # 取出来视频的名称和地址
    r2 = requests.get(viedeo_url,headers=headers)
    with open(path,'wb')as f:
        f.write(r2.content)

3、保存下载的视频

infos=html['data']['items']
        for info in infos:
            title = info['item']['description']#小视频的标题
            video_url = info['item']['video_playurl']#视频地址
            print(title,video_url)
            #为了防止视频没有video_url
            try:
                get_video(video_url,path=r"E:\app\视频\%s.mp4"%title)
                print("成功下载一个")
            except BaseException:
                print("下载失败")
                pass

完整代码

import requests
import random
import time
headers = {
    "User-Agent":"Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.75 Safari/537.36"
}
def get_json(url,ajax):
    # 构建请求信息
    params = {
        'page_size':10,
        'next_offset': ajax,
        'tag':'今日热门',
        'platform':'pc'
    }
    # 防止请求失败
    try:
        html = requests.get(url,params=params,headers=headers).json()
        return html
    except BaseException:
        print('页面加载失败')
def get_video(viedeo_url,path):
    # 取出来视频的名称和地址
    r2 = requests.get(viedeo_url,headers=headers)
    with open(path,'wb')as f:
        f.write(r2.content)
if __name__ == '__main__':
    for i in range(3):
        url='http://api.vc.bilibili.com/board/v1/ranking/top?'
        num=i*10+1
        html=get_json(url,num)
        infos=html['data']['items']
        for info in infos:
            title = info['item']['description']#小视频的标题
            video_url = info['item']['video_playurl']#视频地址
            print(title,video_url)
            #为了防止视频没有video_url
            try:
                get_video(video_url,path=r"E:\app\视频\%s.mp4"%title)
                print("成功下载一个")
            except BaseException:
                print("下载失败")
                pass
        # 设置加载时间
        time.sleep(random.random() * 3)

在这里插入图片描述
点赞关注~~持续分享,加入我们,了解更多。642830685,免费领取最新软件测试大厂面试资料和Python自动化、接口、框架搭建学习资料!技术大牛解惑答疑,同行一起交流。

  • 4
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值