Python爬虫是一种强大而灵活的工具,可以帮助你在互联网上获取各种有趣的信息。如果你是一个热爱哔哩哔哩(B站)的粉丝,那么你肯定想把喜欢的视频保存到本地观看,随时随地享受其中的精彩内容。
今天,我将向你介绍如何使用Python爬虫轻松实现这个目标。只需简单的代码,你就能快速下载哔哩哔哩上的视频,并在离线状态下观看它们。
发送HTTP请求
requests是一个很实用的Python HTTP客户端库,爬虫和测试服务器响应数据时经常会用到,它是python语言的第三方的库,专门用于发送HTTP请求,使用起来比urllib更简洁也更强大。如:请求www.baidu.com
import requests
url='https://www.baidu.com'
res=requests.post(url)
print(res.text)
image.png
请求头定义
Python中可以使用requests库来发送HTTP请求。在发送请求时,我们需要设置合适的请求头信息,这样服务器才能正确地处理我们的请求并返回相应结果。不自定义的话默认头部信息可能会被浏览器察觉你是在用脚本下载我的网站上的东西。
提取我们需要的东西
我们可以使用正则表达式去提取 如字符串Lusang, the cherry blossoms in our hometown have bloomed again,我们要提取其中的cherry blossoms则可以使用正则表达式进行提取。很多种用法哈:这里直接提取the 和 in our之间的字符即可
import re
strs="Lusang, the cherry blossoms in our hometown have bloomed again"
s=re.findall('the (.*?) in our',strs)
print("".join(s))
image.png
保存视频
获取到视频链接和音频链接 我们就要进行保存下载
received_video = 0
with open('%s_video.mp4' % video_name, 'ab') as output:
while int(video_content.headers['content-length']) > received_video:
headers['Range'] = 'bytes=' + str(received_video) + '-'
response = requests.get(video_url, headers=headers)
output.write(response.content)
received_video += len(response.content)
使用open()函数打开一个文件,文件名根据video_name动态生成。通过循环判断已接收到的视频数据大小是否小于总数据大小,如果小于则继续下载。用断点续传,避免重复下载已有部分。
效果如下
完整源码获取
公众号:「吉吉说安全」,对我发消息【20240307】免费获取
倾心制作,【点赞】【在看】【转发】鼓励作者继续为你带来更好东西。
免责声明
由于传播、利用本公众号所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,本公众号及作者不为此承担任何责任,一旦造成后果请自行承担!如有侵权烦请告知,我们会立即删除并致歉。谢谢!