本文概要 爬取B站视频的办法在csdn和B站有很多 但是本文算作是对爬取步骤的一个拆解 同时也算是我的笔记。本代码的参考对象是https://blog.csdn.net/Mr_Ohahah/article/details/108121
本文概要
爬取B站视频的办法在csdn和B站有很多,但是本文算作是对爬取步骤的一个拆解,同时也算是我的笔记。本代码的参考对象是https://blog.csdn.net/Mr_Ohahah/article/details/108121510#comments_13858657。使用了不少函数,光看的话应该是比较难以看的,所以我将用jupyter对这位大佬的代码进行拆分和说明。(侵删)
开始爬取视频
首先我们要明确我们要爬的视频,我要爬的是这个https://www.bilibili.com/video/BV1SE411b7HP。
首先爬取源代码
bilibili的视频原地址放在源代码中,所以第一步就是获取源代码
# 导入所有标准库(全导就是了)
import requests
from requests import RequestException
from lxml import etree
from contextlib import closing
from pyquery import PyQuery as pq
import re
import os
import json
import subprocess
之后就是制作请求头
head = {
"user-agent": 'Mozilla***********************537.36'
}
开始爬取源代码,并使用re库处理一下。
baseurl = 'https://www.bilibili.com/video/BV1SE411b7HP'
html = requests.get(url = baseurl, headers = head).text
doc = pq(html)
title = doc('#viewbox_report > h1 > span').text()
pattern = r'\'
result = re.findall(pattern, html)[0]
temp = json.loads(result)
print(("开始下载--->")+title)
此时它会给我们返回一个叫做temp的json格式的数据,我们已经把源代码里的视频地址处理成json数据存起来,输入temp查看
如图所示,我们已经爬取了视频的原地址,但是当我们输入url时,我们会受到403,无权限访问。
其实如果运气好的话爬到后缀为logo=A0000001的地址,是可以直接用浏览器打开的。但是我们爬到的这个显然不行。但是不要管它,我们直接用这个地址来下载。
把temp稍微处理一下,就像给螃蟹剥壳,让它露出视频的原地址,代码如下:
temp["data"]["dash"]["video"][0]['baseUrl']
temp["data"][&