将白嫖进行到底?简单爬虫爬取B站视频

起因

作为一个B站的忠实粉丝,每天睡前和起床刷一下视频那是必须的。不过一般我都是在手机上刷,昨天用电脑刷的时候本来想下载一个视频,但是发现网页居然没有app的缓存功能,所以无奈只能自己动手写一个来下载视频了。(本来昨晚写完,辛辛苦苦还录了视频给B站投稿的,结果今天说内容违规无奈

一步步实现

方法一

在这里插入图片描述
这是我看的视频的页面,然后F12,去找视频网址
在这里插入图片描述
发现是blob加密的,网上很多关于blob解密的博客,帖子。但是最后都是返回很多ts然后再拼接,那有没有直接得到的呢?再去network里面看看视频播放的时候的加载内容,发现了这个
在这里插入图片描述
在这里插入图片描述
有很多这种,一看就是视频文件的乱码,所以我们要去访问这个网址得到这些内容再保存到本地就行了。所以我们要去找这个网址,我发现网页里面其实就有。
ctrl+F去网页搜索m4s,发现了这些
在这里插入图片描述
接下来正则匹配到网址就好,不过保存文件的时候一开始我是用m4s格式,后来发现打不开,所以把文件格式改成flv保存。

方法二

大致思路和上面一样,只是我在network中找到了一个api
在这里插入图片描述
在这里插入图片描述
所以第二种实现就是访问这个网页,从返回的json中提取url,然后再去访问url,保存成文件。

代码

这个代码是第一种方法的代码,第二种也很简单,可以自己动手试一下,只要注意headers参数就好

import requests
import re

def get_html(url):
    return requests.get(url,headers=headers1).text

def parse(html):
    video_name=re.findall('<span class="tit">(.*?)</span>',html,re.S)[0]+'.flv'#本来是m4s,但是电脑打不开所以还是用flv
    print("正在爬取"+video_name+"...")
    video_url=re.findall('window.__playinfo__={.*?"baseUrl":"(.*?)".*?}',html,re.S)[0]
    # print(video_url)
    return video_url,video_name

def download(videourl,video_name):
    with open(video_name,'wb') as f:
        f.write(requests.get(videourl,headers=headers2,stream=True,verify=False).content)
    f.close()
    print("视频下载完成!")


if __name__ == '__main__':
    avid=input("请输入要爬取的视频id:")
    base_url=f'https://www.bilibili.com/video/av{avid}'
    headers1={
        'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36',
        'Host': 'www.bilibili.com',
        'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
        'Accept-Encoding':'gzip, deflate, br',
        'Accept-Language':'zh-CN,zh;q=0.9',
        'Cache-Control': 'max-age=0',
        'Connection': 'keep-alive'
    }

    headers2={
        'Host':'cn-jsnj3-cmcc-v-14.bilivideo.com',
        'Accept-Encoding':'identity',
        'Accept-Language':'zh-CN,zh;q=0.9',
        'Origin':'https://www.bilibili.com',
        'Referer':base_url,
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36'
    }
    html=get_html(base_url)
    videourl,videoname=parse(html)
    download(videourl,videoname)

结果

在这里插入图片描述
在这里插入图片描述
缺点和改进:缺点就是没有声音,音频部分的爬取和视频整合还要再想想,另外可以从首页匹配所有的视频id然后循环爬取所有的视频,以及一些线程也可以加进去。

最后

白嫖只是说着玩玩,循环爬取也不可取,不要给服务器太大压力。B站up主们做视频也很不容易,我们可以从丰富的优质内容视频中学到很多东西,所以拒绝下次一定,不做白嫖党!!!

### 回答1: GitHub Copilot是由GitHub和OpenAI共同开发的一款新型编程辅助工具,它使用人工智能技术,能够分析代码,预测程序员的下一步操作,并提供代码片段和建议。然而,很多人认为GitHub Copilot实际上等于是在免费使用OpenAI的GPT-3技术,尤其是在没有向OpenAI支付任何费用的情况下免费使用它的API接口,因此被称为“白嫖”OpenAI技术。 GitHub Copilot的免费使用引发了很多关于知识产权和付费模式的讨论。虽然GitHub Copilot的免费使用可能会吸引更多的开发者,但也可能对OpenAI的商业模式造成竞争压力。除此之外,也有人认为,免费使用GitHub Copilot可能会损害开发者的职业发展,因为缺乏独立解决问题和独立思考的能力,这可能会对他们的工作效率和质量产生负面影响。 总之,无论如何,免费使用GitHub Copilot确实为程序员提供了便利,但是我们也应该认识到其局限性和风险,避免出现不必要的负面影响。GitHub Copilot只能作为编程辅助工具的一种选择,而不是完全依赖的唯一解决方案。进一步地讲,在免费使用GitHub Copilot的同时,我们应该学会独立思考和解决问题的能力,这样才能成为真正的优秀程序员。 ### 回答2: GitHub Copilot是一款由GitHub开发的人工智能代码辅助工具。白嫖是指免费使用并获取了一定的价值。对于GitHub Copilot而言,虽然它确实是一个免费工具,但这并不等同于白嫖。 首先,GitHub Copilot是一个由AI驱动的代码提示和生成工具。它通过分析海量的开源代码库,以及用户自己的代码,为开发者提供智能的代码补全和生成功能。这种功能有助于提高开发效率和减少编码工作量。然而,这一功能的实现离不开技术研发团队的巨大工作量和投资。因此,虽然用户可以免费使用GitHub Copilot,但是背后的研发团队和GitHub自身并不是“白嫖”这个工具。 其次,GitHub Copilot是基于开源模型训练的。GitHub Copilot的AI模型是通过使用GitHub上数亿行的开源代码进行训练而得到的。这意味着GitHub Copilot建立在开源社区的贡献和支持之上。因此,使用GitHub Copilot的用户不仅是在获得智能代码提示,同时也在为开源社区作出贡献,共同推动了开源软件的发展和进步。因此,将GitHub Copilot称为“白嫖”是不准确的。 最后,虽然GitHub Copilot是免费提供给用户使用的,在未来可能会推出付费版本,增加更多高级功能。这种商业模式也是为了支持该工具的持续发展和维护。 综上所述,尽管我们可以免费使用GitHub Copilot,但我们应该意识到这背后的努力和付出,同时也要认识到我们作为用户的价值和贡献。因此,以“白嫖”来形容GitHub Copilot并不准确,我们可以更恰当地说是“免费使用并享受开源社区的贡献”。 ### 回答3: GitHub Copilot是一款基于机器学习的代码自动补全工具,由GitHub和OpenAI共同开发。它可以帮助开发者更快速地编写代码,提供了丰富的代码片段和建议,极大地提高了编码的效率和质量。然而,可惜的是,GitHub Copilot并非完全免费使用。 首先,GitHub Copilot基于机器学习模型的训练需要耗费大量的计算资源和数据。这些资源和数据的获取和维护都需要资金支持,因此GitHub Copilot的研发和维护不可能完全免费。 其次,虽然GitHub Copilot对于个人开发者来说是免费的,但对于商业用途的开发者则需要付费订阅GitHub Copilot Pro服务。这个服务提供了更高级的功能和支持,例如对商业代码的支持、更多语言的支持等。 因此,虽然GitHub Copilot在某些方面可以被看作是一种"白嫖"资源,但它仍然需要付费来获取全面的使用权。GitHub Copilot的付费订阅模式确保了其可持续发展与进一步的研发,同时也体现了开发者和GitHub Copilot团队的对彼此努力的认可和回报。所以,即使有部分功能是免费的,我们还是应该为使用GitHub Copilot的各种便利付出相应的价值。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

shelgi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值