Python采集哔哩哔哩(bilibili)视频(详细教程)

这篇博客介绍了如何使用Python爬取哔哩哔哩(B站)视频,包括环境准备、页面分析、代码实现及视频下载合并的详细步骤。通过分析视频链接和抓包,获取视频和音频URL,并讲解了如何处理Referer限制。最后,给出了完整的爬虫代码实操流程。

在这里插入图片描述

一、环境准备

我这里使用的是环境如下仅供参考: 开发工具: pycharm python环境:python-3.8.0 依赖的包: shutil,os,re,json,choice,requests,lxml

很多人学习python,不知道从何学起。
很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。
很多已经做案例的人,却不知道如何去学习更加高深的知识。
那么针对这三类人,我给大家提供一个好的学习平台,免费领取视频教程,电子书籍,以及课程的源代码!??¤
QQ群:828010317

二、页面分析

我在这里就拿前段时间非常火的马老师的视频来举例子吧。 视频链接: www.bilibili.com/video/BV1Ef…

  1. 视频链接解析 我们这里只需要 BV1Ef4y1i78b 也就是 video后面? 号前面
  2. 第二部分抓包,哔哩哔哩这里的视频被分成多个小段了经过看源码分析后我们可以解析</script><script>中的内容返回一个json串解析获取我们想要的数据即可。. 在这里插入图片描述
  3. 分析返回json中的具体内容

返回给我们的们如下,真正对我们有用的信息在data中 在这里插入图片描述 在data 下面我们就可以清晰的看到我们想要的内容了,如视频的画质,以及视频的地址等,注意:如果你拿到地址直接进行访问的话是访问不到了,哔哩哔哩中添加了Referer如果你直接在浏览器访问是没有Referer的是找不到页面的。 我们需要解析的内容如下:

  1. 视频的时长
  2. 视频的质量
  3. 视频的URL
  4. 音频的URL
  5. 音频和视频合并

在这里插入图片描述

三、代码实操

3.1 准备工作

依赖的包

import json
import os
import re
import shutil
import ssl
import time
import requests
from concurrent.futures import ThreadPoolExecutor
from random import choice
from 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
### 使用 Python 编写爬虫抓取哩漫画资源 尽管当前提供的引用主要涉及视频、弹幕以及UP主信息的抓取[^1][^2][^3],并未直接提及有关哩漫画的具体教程。然而,可以基于这些基础方法扩展到漫画领域。以下是实现这一目标的关键步骤和技术要点。 #### 依赖库安装 为了构建一个功能完善的爬虫程序,需先确保已安装必要的Python库。通常情况下,`requests`用于发送HTTP请求,而`BeautifulSoup`则负责HTML页面解析。如果需要处理更复杂的动态加载内容,则可能需要用到`selenium`或其他工具模拟浏览器行为。具体命令如下所示: ```bash pip install requests beautifulsoup4 selenium ``` #### 请求头设置与反爬机制规避 哩网站具有较强的反爬措施,因此在发起网络请求时应合理配置User-Agent等头部信息来模仿真实用户的访问习惯。此外还需注意频率控制以免触发封禁机制。 ```python import requests headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)', } response = requests.get('https://manga.bilibili.com/', headers=headers) print(response.status_code) ``` #### 数据提取逻辑设计 针对漫画部分的数据结构分析表明,每部作品的相关属性如名称、作者、分类标签等均嵌套于特定JSON对象或者DOM节点之中。利用正则表达式匹配或是CSS选择器定位能够高效完成字段抽取工作。 ```python from bs4 import BeautifulSoup soup = BeautifulSoup(response.text, 'html.parser') comics = soup.find_all('div', class_='comic-item') for comic in comics: title = comic.a['title'] cover_url = comic.img['src'] print(f'{title}: {cover_url}') ``` #### 存储方式规划 最后一步便是考虑如何持久化所采集的信息。常见的做法有保存至本地CSV文件便于后续统计分析;亦或者是上传数据库以便长期维护查询效率更高。 ```python import csv with open('bilibili_comics.csv', mode='w') as f: writer = csv.writer(f) writer.writerow(['Title', 'Cover URL']) for comic in comics: row_data = [ comic.a['title'], comic.img['src'] ] writer.writerow(row_data) ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值