Python爬虫教程:爬取下载b站视频【附源码】

您所在的位置:网站首页 bilibili视频代码 Python爬虫教程:爬取下载b站视频【附源码】

Python爬虫教程:爬取下载b站视频【附源码】

2024-06-17 06:48:37| 来源: 网络整理| 查看: 265

爬取下载b站视频【附源码】,话不多说,说干就干。

下载仓库

[email protected]:inspurer/PythonSpider.git

或者直接下载:https://github.com/inspurer/PythonSpider/tree/master/bilibili

替换

随便打开一个b站的界面,比如

将url复制到代码中去,运行代码,稍等一会儿,上述图中的视频就被下载下来了。

完整代码奉上!

代码语言:javascript复制import requests import re import json from contextlib import closing from pyquery import PyQuery as pq from requests import RequestException class bilibili(): def __init__(self): self.getHtmlHeaders={ 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36', 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8', 'Accept-Encoding': 'gzip, deflate, br', 'Accept-Language': 'zh-CN,zh;q = 0.9' } self.downloadVideoHeaders={ 'Origin': 'https://www.bilibili.com', 'Referer': 'https://www.bilibili.com/video/av26522634', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36', } #一般这里得到的网页源码和F12查看看到的不一样,因为F12开发者工具里的源码经过了浏览器的解释 def getHtml(self,url): try: response = requests.get(url=url, headers= self.getHtmlHeaders) print(response.status_code) if response.status_code == 200: return response.text except RequestException: print('请求Html错误:') def parseHtml(self,html): #用pq解析得到视频标题 doc = pq(html) video_title = doc('#viewbox_report > h1 > span').text() #用正则、json得到视频url;用pq失败后的无奈之举 pattern = r'\window\.__playinfo__=(.*?)\' result = re.findall(pattern, html)[0] temp = json.loads(result) #temp['durl']是一个列表,里面有很多字典 #video_url = temp['durl'] for item in temp['durl']: if 'url' in item.keys(): video_url = item['url'] #print(video_url) return{ 'title': video_title, 'url': video_url } def download_video(self,video): title = re.sub(r'[\/:*?"|]', '-', video['title']) # 去掉创建文件时的非法字符 url = video['url'] filename = title +'.flv' with open(filename, "wb") as f: f.write(requests.get(url=url, headers=self.downloadVideoHeaders, stream=True, verify=False).content) #closing适用于提供了 close() 实现的对象,比如网络连接、数据库连接 # with closing(requests.get(video['url'], headers=self.downloadVideoHeaders, stream=True, verify=False)) as res: # if res.status_code == 200: # with open(filename, "wb") as f: # for chunk in res.iter_content(chunk_size=1024): # if chunk: # f.write(chunk) def run(self,url): self.download_video(self.parseHtml(self.getHtml(url))) if __name__ == '__main__': url = 'https://www.bilibili.com/video/av18100312' bilibili().run(url)

运行结果奉上!



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭