前面通过python爬虫爬取过图片,文字,今天我们一起爬取下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 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)

写的时间有点紧急,大概的写了下过程,如果不懂的地方可以下方留言,看到后第一时间会进行回复,感觉写的对您有帮助,点个关注~~~~

爬虫---爬取b站小视频的更多相关文章

  1. Python爬虫一爬取B站小视频源码

    如果要爬取多页的话 在最下方循环中 填写好循环的次数就可以了 项目源码 from fake_useragent import UserAgent import requests import time ...

  2. 抓取B站小视频

    抓取B站小视频的代码如下: #请求库import requests #请求头部信息(用户代理)headers={ 'User-Agent':'Mozilla/5.0 (Windows NT 6.1; ...

  3. Python爬虫---爬取抖音短视频

    目录 前言 抖音爬虫制作 选定网页 分析网页 提取id构造网址 拼接数据包链接 获取视频地址 下载视频 全部代码 实现结果 待解决的问题 前言 最近一直想要写一个抖音爬虫来批量下载抖音的短视频,但是经 ...

  4. 爬取b站互动视频信息

    首先分辨视频是不是互动视频可以看 https://api.bilibili.com/x/player.so?id=cid:1&aid=89017 这个api返回的xml中的 <inter ...

  5. 简单的方法爬取b站dnf视频封面步骤解释

    这随笔代码链接:http://www.cnblogs.com/yinghualuowu/p/8186375.html 首先我们要知道,一个分区封面显示到底在哪里可以找到. 很明显,查看审查元素并不能找 ...

  6. python爬虫——爬取B站用户在线人数

    国庆期间想要统计一下bilibili网站的在线人数变化,写了一个简单的爬虫程序.主要是对https://api.bilibili.com/x/web-interface/online返回的参数进行分析 ...

  7. python爬取b站排行榜视频信息

    和上一篇相比,差别不是很大 import xlrd#读取excel import xlwt#写入excel import requests import linecache import wordcl ...

  8. python3爬虫-爬取B站排行榜信息

    import requests, re, time, os category_dic = { "all": "全站榜", "origin": ...

  9. Python 简单的方法爬取b站dnf视频封面

    import urllib.request cnt=0 def instr(keystr): st=keystr.find('(')+1 strhtml=keystr[st:len(keystr)-1 ...

随机推荐

  1. Nuget使用时遇到的问题,Solved

    在VS的程序包管理控制台中输入Install-package MySql.Data时,默认安装最新的版本8.0.18, 但是安装完成后,发现包并没有添加到项目的引用列表中, 在解决方案的package ...

  2. LogMiner Utility Release 8i - 11g (Doc ID 291686.1)

    LogMiner Utility Release 8i - 11g (Doc ID 291686.1) APPLIES TO: Oracle Database Exadata Cloud Machin ...

  3. 用Docker运行Jenkins自动化构建.NET Core项目

    目标 当代码提交到GitHub后,自动生成构建项目并部署到服务器.接下来介绍一下如何在容器中运行Jenkins,并自动化构建GitHub上的项目,使用自动化构建来解放你的双手. 前置条件 一台已经安装 ...

  4. APK更新集成实践

    任务目标:将内网APK打包后最新下载链接.更新时间.更改日志显示在一个我自己制作的APP里 任务作用:我们在内网测试时更新下载APK更加便捷,并且能够清楚目标APK的版本情况,回归.验证做到有的放矢 ...

  5. DirectShow 应用开发过程

    本文准备总结一些 Direct Show 常用的API接口函数,方便以后查询回忆.如果这里没有你想了解的函数,你可以自行搜索MSDN + 函数名去 MSDN 查找你想要了解的函数,也可以查看百度百科相 ...

  6. 感受一把面试官通过一道题目引出的关于 TCP 的 5 个连环炮!

    面试现场:从 URL 在浏览器被被输入到页面展现的过程中发生了什么? 相信大多数准备过的同学都能回答出来,但是如果继续问:收到的 HTML 如果包含几十个图片标签,这些图片是以什么方式什么顺序下载?建 ...

  7. jQuery 源码分析(十一) 队列模块 Queue详解

    队列是常用的数据结构之一,只允许在表的前端(队头)进行删除操作(出队),在表的后端(队尾)进行插入操作(入队).特点是先进先出,最先插入的元素最先被删除. 在jQuery内部,队列模块为动画模块提供基 ...

  8. 死磕 java同步系列之Semaphore源码解析

    问题 (1)Semaphore是什么? (2)Semaphore具有哪些特性? (3)Semaphore通常使用在什么场景中? (4)Semaphore的许可次数是否可以动态增减? (5)Semaph ...

  9. 湖南省web应用软件(中慧杯)

    湖南省web应用软件 写这篇博客已经是比完赛的第四天了,我还记得那天下着小雨.我们早早的到了比赛的现场抽检机器,在比赛前一天我很是激动.我还记得我们从学校,去株洲的时候我们的领导来给我加油,特别是我的 ...

  10. Python爬取620首虾米歌曲,揭秘五月天为什么狂吸粉?!

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: CDA数据分析师 PS:如有需要Python学习资料的小伙伴可以加点 ...