|
目录前言 道路千万条,安全第一条 爬虫不谨慎,亲人两行泪获取b站的章若楠的视频一、话不多说,先上代码二、爬虫四步走1.UA伪装2.获取url3.发送请求4.获取响应数据进行解析并保存 总结前言 道路千万条,安全第一条 爬虫不谨慎,亲人两行泪 获取b站的章若楠的视频 不要问,问就是博主喜欢,嘿嘿嘿嘿(流口水) 图片转载自SinaVisitorSystem 一、话不多说,先上代码#请求b站视频importjsonimportrequestsfromlxmlimportetreeif__name__=='__main__':head={"User-Agent":"Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/126.0.0.0Safari/537.36Edg/126.0.0.0",#防盗链"Referer":"https://www.bilibili.com/","Cookie":"buvid3=3EEF3EE1-472C-F430-105F-0E4F321F331C25161infoc;b_nut=1720613925;_uuid=46847D108-EFD1-9828-99910-32119EADB6EB26022infoc;enable_web_push=DISABLE;buvid4=E9918A3A-008D-2748-2B1F-78B04E8CCA5825688-024071012-IYJQtQw8DTdtrI0uY1UGvQ%3D%3D;buvid_fp=adf3cfaf35396cd4f051041d58ea252d;DedeUserID=455536180;DedeUserID__ckMd5=ece5cba51b3582b0;header_theme_version=CLOSE;rpdid=|(Y|RJRRJ~m0J'u~k|YuR|k);hit-dyn-v2=1;CURRENT_BLACKGAP=0;CURRENT_FNVAL=4048;CURRENT_QUALITY=80;b_lsid=FA4254F2_190DA67F5A6;bmg_af_switch=1;bmg_src_def_domain=i0.hdslb.com;SESSDATA=464ec009%2C1737203167%2C4093c%2A72CjCcAmS6QdnftcRgMbranRB57RDcvOgVEYQ2eANilbiZTke2ujiipqzyDhLaHzdf-lQSVnBETDB6RC1iRTBPOXE0MXJvWndtQ2J5M0ttRUdsNzV4eDBOS0ZHSnJFNGstUXdoZV9YWlFDMUN6WktnVWdyZzNXTHoxX3ZHMEQ4WnBRVFhuS3FWdlZRIIEC;bili_jct=7dcc1afe4e9061803755fe502bd89493;home_feed_column=5;browser_resolution=1528-750;bili_ticket=eyJhbGciOiJIUzI1NiIsImtpZCI6InMwMyIsInR5cCI6IkpXVCJ9.eyJleHAiOjE3MjE5MTAzODcsImlhdCI6MTcyMTY1MTEyNywicGx0IjotMX0.ZBTc3IhjtIXKw31_mMRIL58EBBFttxFrh9PXvDeNu74;bili_ticket_expires=1721910327;sid=5oumv249;bp_t_offset_455536180=956974561008549888"}url="https://www.bilibili.com/video/BV1Ya411x7YS/?spm_id_from=333.788.recommend_more_video.-1&vd_source=c37b332e3068ca57bd61f05c52b41922"response=requests.get(url,headers=head)vid=response.texttree=etree.HTML(vid)withopen("bilibili.html","w",encoding="utf8")asbili:bili.write(vid)vid_info="".join(tree.xpath("//head/script[4]/text()"))[20:]#print(vid_info)#是一个json大字符串info_dict=json.loads(vid_info)#print(info_dict)#变成字典video_url=info_dict["data"]["dash"]["video"][0]["baseUrl"]#获取视频的网址audio_url=info_dict["data"]["dash"]["audio"][0]["baseUrl"]#获取音频的网址video_content=requests.get(video_url,headers=head).contentaudio_content=requests.get(audio_url,headers=head).contentwithopen("zhangruonan.wmv","wb")asa:a.write(video_content)withopen("zhangruonan.mp4","wb")asb:b.write(audio_content)pass 可以看见,这次代码多了不少东西,还有些变得不一样了,没事,我们一步步分析。 二、爬虫四步走1.UA伪装 这次UA伪装的头部代码多了不少,"Cookie"和"Referer",这些其实都是b站的反扒机制。而且这次也不用随机生成UA了,而是使用检查里的,因为随机生成的可能是APP端的,这个用不了。先登录自己的b站账号,再获取Cookie,因为每个用户的Cookie是不一样的获取UA,获取referer。 2.获取url 在该界面按f12进入检查界面,若是检查界面没东西的话就刷新网页,然后往上翻到第一个,复制url粘贴到pycharm即可 3.发送请求流水的url,铁打的发送请求。response=requests.get(url,headers=head) 4.获取响应数据进行解析并保存这次不一样的地方在于,视频和音频的url在head的第四个script标签下。而里面的文本内容在去除前面的"window.__playinfo__="后,取出来的是个json大字符串。用json.loads方法将字符串转换成字典,再通过字典的键去取里面的视频和音频的url。b站的视频和音频网址都放在固定的键内,用上面给的代码即可取出来。取出来之后再次发送请求,获取数据。注意!!!图片,视频和音频都是二进制内容,所以用content属性获取。最后,以写二进制内容的方式存入文件中,注意文件的类型,音频是MP4,视频是MP4或者是wmv。 总结作者的废话: 章若楠太好看啦!封面图片:
|
|