怎么爬取b站视频,python爬取bilibili视频
看源代码可以看到,哔哩哔哩的视频地址经过了blob处理,去掉blob后,就没有办法访问了,所以不能直接下载,只好分析请求。
我们都知道哔哩哔哩的视频格式是。flv。如果你仔细看这个地址的前面部分,有.acgvideo.com.xxx.flv,可以大致确定这是真实的视频地址。但是禁止直接复制这个地址来访问网页或者请求,因为哔哩哔哩加了防爬,所以需要加一个请求头。
现在的问题是如何获得这个视频地址?要么存储在网页中,要么经过js处理后获取。幸运的是,哔哩哔哩直接把这个地址放在了网页上。分析这个链接的请求参数,只要找一个特征参数名,在网页的源代码里搜索就可以了。我在这里选择了trid,经过对比,在网址后面找到了我们想要的那一长串视频地址。
以下载梦想成真为例,用正则表达式匹配视频地址和视频名称。
导入请求导入rebase _ URL= 3359 www.bilibili.com/video/av6499012 #请求头,需要添加这些请求头来访问初始网页。如果不添加,就不会得到完整的源代码(防爬)base _ headers={ user-agent : Mozilla/5.0(Windows NT 6.2;WOW64) AppleWebKit/537.36 (KHTML,像壁虎一样)Chrome/58 . 0 . 3029 . 110 Safari/537.36 SE 2。X MetaSr 1.0 , Accept: text/html,application/xhtml xml,application/XML;q=0.9,image/webp,image/apng,*/*;q=0.8,应用/签约-交换;v=b3 , Accept-Encoding: gzip,deflate,br , Accept-Language: zh-CN,zh;Q=0.9}#请求视频下载地址Download _ headers={ user-agent : Mozilla/5.0(Windows NT 6.2;WOW64) AppleWebKit/537.36 (KHTML,像壁虎一样)Chrome/58 . 0 . 3029 . 110 Safari/537.36 SE 2。X MetaSr 1.0 , Referer : https://www . bilibili . com/video/av 6499012 , Origin:https://www.bilibili.com , Host : upos-Hz-mirrorkodou . ACG video . com , Accept:*/* , Accept-Encoding:gzip,deflate,sdch,br , Accept-Language:zh-CN,zh;q=0.8 } base _ response=requests . get(base _ URL,headers=base _ headers)html=base _ response . text video _ name=re . search( span class= tit (。*?)/span ,html,re。s)。组(1)”。flv download _ URL=re . search( window。__playinfo__={。*?url“:”(。*?).*?} ,html,re。s)。group(1)print(video _ name)with open(video _ name, WB )as f:f . write(requests . get(download _ URL,headers=download_headers,stream=True,verify=False)。内容)
flv格式的视频可以用KMPlayer播放
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。