如何用python爬取视频_介绍Python爬取哔哩哔哩视频

这篇博客介绍了如何使用Python爬取哔哩哔哩的视频,包括环境准备、页面分析、代码实现和总结。作者是一名大数据开发工程师,分享了爬取视频的步骤,包括获取视频链接、解析JSON信息、下载视频和音频,并使用ffmpeg合并。
摘要由CSDN通过智能技术生成

python视频教程栏目介绍如何爬取视频

本篇文章主要给大家讲解下如实使用python 爬取哔哩哔哩中的视频,首先我是一名大数据开发工程师,爬虫只是我的一个业余爱好,喜欢爬虫的小伙伴可以一起交流。好了多了就不多说了喜欢的朋有可以收藏,转发请复原文链接谢谢

一、环境准备

我这里使用的是环境如下仅供参考:

开发工具: pycharm

python环境:python-3.8.0

依赖的包: shutil,os,re,json,choice,requests,lxml

二、页面分析

我在这里就拿前段时间非常火的马老师的视频来举例子吧。

视频链接: https://www.bilibili.com/video/BV1Ef4y1i78b?from=search&seid=12072538764197074893视频链接解析 我们这里只需要 BV1Ef4y1i78b 也就是 video后面? 号前面

第二部分抓包,哔哩哔哩这里的视频被分成多个小段了经过看源码分析后我们可以解析

2b9837f83bc78cc8e8824e900c7aa456-1.png

分析返回json中的具体内容

返回给我们的们如下,真正对我们有用的信息在data中

c47fffc01c0dc7f28dafe238d9d2036d-2.png

在data 下面我们就可以清晰的看到我们想要的内容了,如视频的画质,以及视频的地址等,注意:如果你拿到地址直接进行访问的话是访问不到了,哔哩哔哩中添加了Referer如果你直接在浏览器访问是没有Referer的是找不到页面的。

我们需要解析的内容如下:视频的时长

视频的质量

视频的URL

音频的URL

音频和视频合并

c47fffc01c0dc7f28dafe238d9d2036d-3.png

三、代码实操

3.1 准备工作

依赖的包import jsonimport osimport reimport shutilimport sslimport timeimport requestsfrom concurrent.futures import ThreadPoolExecutorfrom random import choicefrom lxml import etree

添加请求头和随机用户代理#设置请求头等参数,防止被反爬headers = {

'Accept': '*/*',

'Accept-Language': 'en-US,en;q=0.5',

'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.116 Safari/537.36'}def get_user_agent():

'''获取随机用户代理'''

user_agents = [

"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; AcooBrowser; .NET CLR 1.1.4322; .NET CLR 2.0.50727)",

"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Acoo Browser; SLCC1; .NET CLR 2.0.50727; Media Cente

你可以使用 Python 的 requests 和 BeautifulSoup 库来爬取哔哩哔哩视频。 首先,你需要安装这两个库。可以通过以下命令来安装: ``` pip install requests beautifulsoup4 ``` 接下来,你需要找到哔哩哔哩视频的 URL。可以通过以下方式来找到: 1. 在哔哩哔哩网站上找到你想要爬取视频,并复制视频的链接。 2. 在你想要爬取视频页面上,按下 F12 键打开浏览器的开发者工具,切换到 Network 选项卡。 3. 刷新页面,然后在开发者工具中找到 Name 为 api.bilibili.com 的请求,复制这个请求的 URL。 接下来,你可以使用以下代码来爬取视频: ```python import requests from bs4 import BeautifulSoup # 将视频链接替换成你想要爬取视频链接 url = "https://www.bilibili.com/video/BV1G4411x7s" # 获取视频页面的 HTML r = requests.get(url) html = r.text # 使用 BeautifulSoup 解析 HTML soup = BeautifulSoup(html, "html.parser") # 找到视频的 aid(视频编号) aid = soup.find("meta", {"itemprop": "url"})["content"].split("/")[-1].split("?")[0] # 构造 API 请求的 URL api_url = f"https://api.bilibili.com/x/web-interface/view?aid={aid}" # 发送 API 请求 r = requests.get(api_url) json_data = r.json() # 找到视频的 cid(弹幕编号) cid = json_data["data"]["cid"] # 构造视频源文件的 URL video_url = f"https://www.bilibili.com/video/{aid}?cid={cid}" # 下载视频 r = requests.get(video_url) with open(f"{aid}.mp4", "wb") as f: f.write(r.content) ``` 这个代码会将视频保存到当前目录下,以视频的编号作为文件名。你可以将视频链接替换成你想要爬取视频链接。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值