Python爬虫教程,爬取B站小视频!

点点圈 提交于 2020-11-17 04:49:34

大数据时代 让爬虫爬取我们所需Python爬虫教程,爬取B站小视频!

今天我们一起爬取下b站的小视频,其实呢,测试过程中需要用到视频文件,找了几个网站下载,都需要会员什么的,直接写一篇爬虫爬取视频~~~

分析b站小视频

1、进入到抓取链接地址

http://vc.bilibili.com/p/eden/rank#/?tab=%E5%85%A8%E9%83%A8

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 requestsimport randomimport timeheaders = {    "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)


为了帮助大家更轻松的学好Python爬虫技术,我给大家分享一套Python爬虫学习资料,Python爬虫技术学习qq裙:583262168免费领取学习过程中有疑问,群里有专业的老司机免费答疑解惑!

PS:如果觉得本篇文章对您有所帮助,欢迎关注、订阅!帮忙点个 再看 转发一下 分享出去

*声明:本文于网络整理,版权归原作者所有,如来源信息有误或侵犯权益,请联系我们删除或授权事宜。


本文分享自微信公众号 - python教程(pythonjc)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!