网页视频抓取脚本(一个python基础学习视频教程(B站视频下载工具)源码下载)
优采云 发布时间: 2021-11-14 01:12网页视频抓取脚本(一个python基础学习视频教程(B站视频下载工具)源码下载)
B站,bilibili,是著名的二维元素站点。也是学习的天堂。推荐大家学习,尤其是想通过视频学习的。有很多大佬发布了学习视频资源。有兴趣的可以慢慢下载。慢慢看,慢慢学习。对于这个人渣,采集永不停歇,学习永无止境!
这里推荐一个python基础学习视频教程,来自莫凡python
友情提示:这个人渣我没看过,因为我太懒了。.
喜欢的视频,先下这个渣渣,尤其是妓女,下载==学习!
我失去了学业,你呢?!
渣在上一节已经分享过了,强烈推荐大家使用。!
但是屯堡下还是有很多不便的地方。看不懂老大的代码,不会修改调用!!
趁着空档找了相关资料参考,找到了接口,重新编写了b站的视频下载爬虫,仅供参考和学习!
def get_cid(self,avid):
headers = {"User-Agent": self.ua.random}
url=f'https://api.bilibili.com/x/player/pagelist?aid={avid}&jsonp=jsonp'
cid_json = requests.get(url=url,headers=headers).json()
print(cid_json)
cid = cid_json['data'][0]['cid']
print(cid)
return cid
def get_vedio_url(self,avid,cid):
url=f'https://api.bilibili.com/x/player/playurl?avid={avid}&cid={cid}&qn=32&type=&otype=json'
print(url)
headers = {"User-Agent": self.ua.random}
vedio_url_json=requests.get(url=url,headers=headers).json()
print(vedio_url_json)
vedio_url=vedio_url_json['data']['durl'][0]['url']
print(vedio_url)
vedio_size=vedio_url_json['data']['durl'][0]['size']
vedio_size=vedio_size/1024/1024
vedio_size ="%.2fM" % vedio_size
print(vedio_size)
video_con=vedio_url,vedio_size
return video_con
B站视频下载有防爬,请注意协议头,一定要带referer
#下载视频
def get_vedio(self,vedio_url,title):
headers = {
"Referer": "https://www.bilibili.com",
"User-Agent": self.ua.random
}
print("开始下载视频..")
r=requests.get(url=vedio_url,headers=headers)
with open(f'{title}.flv',"wb") as f:
f.write(r.content)
print("下载视频完成!")
附上完整的源代码参考:
# -*- coding: utf-8 -*-
#author:微信:huguo00289
import requests
from fake_useragent import UserAgent
import re
class Bz(object):
def __init__(self,url):
self.ua=UserAgent()
self.url=url
def get_html(self):
headers={"User-Agent":self.ua.random}
html=requests.get(url=self.url,headers=headers).content.decode("utf-8")
title=re.findall('(.+?)_哔哩哔哩',html)[0]
title=self.filter(title)
print(title)
rurl=re.findall('',html)[0]
print(rurl)
avid = re.findall("video/av(.+?)/", rurl)[0]
print(avid)
vedio_parm=title,rurl,avid
return vedio_parm
# 替换不合法字符
def filter(self, old_str):
pattern = r'[\|\/\\:\*\?\\\"]'
new_str = re.sub(pattern, "_", old_str) # 剔除不合法字符
return new_str
# 获取cid
def get_cid(self,avid):
headers = {"User-Agent": self.ua.random}
url=f'https://api.bilibili.com/x/player/pagelist?aid={avid}&jsonp=jsonp'
cid_json = requests.get(url=url,headers=headers).json()
print(cid_json)
cid = cid_json['data'][0]['cid']
print(cid)
return cid
#获得视频真实flv地址
def get_vedio_url(self,avid,cid):
url=f'https://api.bilibili.com/x/player/playurl?avid={avid}&cid={cid}&qn=32&type=&otype=json'
print(url)
headers = {"User-Agent": self.ua.random}
vedio_url_json=requests.get(url=url,headers=headers).json()
print(vedio_url_json)
vedio_url=vedio_url_json['data']['durl'][0]['url']
print(vedio_url)
vedio_size=vedio_url_json['data']['durl'][0]['size']
vedio_size=vedio_size/1024/1024
vedio_size ="%.2fM" % vedio_size
print(vedio_size)
video_con=vedio_url,vedio_size
return video_con
#下载视频
def get_vedio(self,vedio_url,title):
headers = {
"Referer": "https://www.bilibili.com",
"User-Agent": self.ua.random
}
print("开始下载视频..")
r=requests.get(url=vedio_url,headers=headers)
with open(f'{title}.flv',"wb") as f:
f.write(r.content)
print("下载视频完成!")
if __name__=="__main__":
url="https://www.bilibili.com/video/BV1xh411k7by"
spider=Bz(url)
vedio_parm=spider.get_html()
cid=spider.get_cid(vedio_parm[2])
video_con=spider.get_vedio_url(vedio_parm[2],cid)
spider.get_vedio(video_con[0],vedio_parm[0])
附上参考资料:
%D5%BE
再次提醒:功能仅供学习交流使用!
附b站下载视频助手工具
B站视频下载工具,可实现网站视频下载
主程序:bspider
编写语言:python3
下载目录:运行目录
推荐系统:win7 64位
本工具助手为本渣自编,保证无毒无后门,无恶意文件代码