欢迎Star的源码
新入手,小白的我,在我眼里Request爬虫永远只有四大步,不服来辩?
- 确定URL,构造请求头
- 发送请求,获取响应
- 解析响应,获取数据
- 保存数据
目标:根据视频BV,获取B站视频弹幕
代码地址如下: 抓包确定URL:
导入:
视频都有一个唯一区分视频:BV号 那么视频的URL规则为:’https://wwww.bilibili.com/video/BV{BVID}’ 找一下弹幕的地址,直接search,即可!如下
由以上抓包可知,弹幕的URL:’https://api.bilibili.com/x/v1/dm/list.so?oid=oid‘, 我们获取到oid那么这一步就完成了 来,回头去找一下oid从何而来呢? 据老夫多年经验指引,他一定在视频URL里面。(其实当时也找了挺久的,甚至逆向那一手,断点调试、调用堆栈等等什么都用出来了。最终还是功夫不负有心人,找到了) 其实回头看,oid是等于video_URL页面里面的cid参数的(验证了Payne式猜想)。过程是难受的
URL,其参数规则也找到了,那么还不就随我为所欲为了。只要拿到视频地址,那不就可以直接拿到弹幕了么。of course!
此处省略3万字(请求,解析,网络原理。。。)
其实当时知道两个方法都去试了,JS那个就不说了,有兴趣的盆友,可以去搞一下 说说这个提取cid参数吧,我用的是正则,这种情况最好是用正则,不过也看个人喜好吧。 可以回头看第二张图,初一乍看我好像不会,啊哈哈~
经过优化后(主要是看了其他视频的那啥之后):写出这个神奇的正则
1 cid = re.findall('.*?cid":+(d{9})+', text)[0]
谢谢你认真看到了末尾,那我也写点私活吧。欢迎查阅源码与star
1 |
其实关于很多网站(普通)的参数就算是有JS加密,以及混淆。并不代表就一定需要去解密,去逆向。有时候真的只需要serch一下惊喜多多,望诸君切记、切记。 |