优酷电视剧弹幕爬虫(香蜜沉沉)

最近一直在追香蜜沉沉烬如霜,看到优酷上有着好多的弹幕,就想把弹幕都爬下来看看到底有多少。说干就干。我们打开优酷,选择香蜜沉沉,当前的热播剧啊。点击进入,随机选择一集,这里我选了第二集作为示例。

想爬取弹幕,首先要先找到弹幕究竟是放在哪里的,先等60秒广告(没有会员的痛),提前打开F12进行抓包,广告结束后,发现了弹幕数据所在的URL。

按之前的做法,我们拿到Request URL。

Request URL:

https://service.danmu.youku.com/list?jsoncallback=jQuery19108670525413629928_1535444880260&mat=0&mcount=1&ct=1001&iid=939763039&aid=317679&cid=97&lid=0&ouid=0&_=1535444880264

将URL后无用的参数去掉精简可得到

https://service.danmu.youku.com/list?mat=0&iid=939763039

发现mat类似于弹幕的页数,测试后发现mat最大值可为45,那我们只要for循环就可遍历所有的弹幕了。

那么还剩一个iid怎么办?

拿当前iid 939763039在F12中搜索,没找到数据来源!what?

重新刷新一下页面,重新搜索,发现了iid所在的位置


可以看到,香蜜沉沉的前20集的iid都出现了,就是上面的vid,对比了一下第二集,一样,成功定位iid的来源。


发现这个URL有点长啊,而且直接复制过来至浏览器居然告诉我客户端不支持播放!

抱有侥幸放入Python中想打印出response试试,果然失败了,询问了好友金鱼同学,他让我加上referer和cookie试试,并告诉我URL过长复制粘贴可能会出现参数丢失,Soga!


如图加上cookie,发现果然成功了,接着对response进行解析得到每集的vid,并for循环调用之前的链接将vid拼进去。

将得到的数据都保存进TXT文件,并在页面打印出每集弹幕的数量。(这里要提前建好TXT文件)


哈哈哈,弹幕都被我爬过来了。

爬虫的时候有一些问题,不知道什么原因,过了几个小时会出现获取vid时接口调用出错的情况,这时就要重复操作之前获取cookie和referer的操作,并换上新的request url,这样会显得很麻烦。(之前成功后过了两小时出现了,不知道是不是偶然情况)

在较为密集调用获取vid的方法时,会被优酷发现提示我一定要登录,这时就只能等待一段时间才会恢复。

现在只能取到前20集的vid,要取之后的需要替换URL,还不够智能。

抓取弹幕时mat为44,45时容易出错,会出现返回错误的情况,导致弹幕会有一些缺失,本以为加了延时会好一点,但是还是这样,不过谨慎起见没在爬取弹幕时,每抓取一次设置了一秒的延迟,慢慢爬,我也不是很着急~

嘿嘿,不一样的看弹幕方式,你值得拥有!

代码地址:Github

你可能感兴趣的:(优酷电视剧弹幕爬虫(香蜜沉沉))