一言不合就爬虫系列之——爬取小姐姐的秒拍MV

浏览: 2530

大连的盛夏实在是热的让人心烦(对于我这种既怕热又怕冷的真的没地呆了)。

再加上令人头疼的毕业论文,这种日子怎能缺少MV来解暑呢。

既然要听,怎么只听一首呢,既然学了爬虫怎么让技能荒废呢。

好吧,烦躁的心情+想听MV的冲动+爬虫技能,今天小魔方教叫你使用R语言批量爬取秒拍小姐姐的清凉MV短片。

http://www.miaopai.com/u/paike_wgleqt8r08

image.png

今天要爬的主页是一位叫陶心瑶小姐姐,刷微博偶然听到她翻唱薛之谦的《方圆万里》,感觉蛮有味道的,于是搜了她的秒拍主页。

主页的作品不多,仅有5首,但是因为仅作为爬虫练习只用,五首也够了(毕竟只是构造循环而已,1000首的步骤也是如此,可能需要构造翻页请求)。

image.png


MV挺长比较占内存,所以这里就不演示怎么去大批量的爬MV了(刚买的m本内存都快被掏空了)。

爬虫三步走:

第一步:分析网页:

首先是到主页之后分析它的网页结构:

image.png

可以看到该主页只有5首mv列表,这时候鼠标随便定位到其中一首(我定位的是第一首),然后右键单击,打开开发者工具。

可以看到该首MV的视频地址存放在:

div.videoCont>

div.videoList>

div.video>

div.MIAOPAI_player>

div.video-player>

video

src

image.png

//gslb.miaopai.com/stream/AUTy2nx4l-T~BhG-zX60wSDwwqoWfwpa.mp4

尝试着用这个地址来浏览器中运行:

image.png

OK,一切正常,说明这个地址很给力!

随然完整的视频地址仅在video子节点的src属性中存放着,但是其实只要仔细研究就会发现,父节点MIAOPAI_player下的data-scid属性,data-img,子节点video内src,poster属性所存储的名称你图片链接名称中也是含有该视频的信息的。(共享一部分视频链接中的地址)。

image.png


事实上网页中展示的视频,最起码会给出三处可用的视频信息,即视频名称、视频封面页、视频的源地址。

(给出这里的解析只是想让大家知道,爬虫不要钻牛角尖,不要以为只有视频原地址的链接一条路可走,玩意节点的链接你抓不出来,那岂不是要哭瞎了)。

第二部:抓取网页:

然后该干嘛呢,当然是抓视频地址了(这里使用rvest包来抓)。

setwd("E:/CloudMusic")

library(tidyverse)

library(rvest)

library(stringr)

(read_html(url,encoding="utf-8")%>%html_nodes("div.videoCont>div.videoList>div.video>div.MIAOPAI_player>div.video-player>video"))

{xml_nodeset (0)}

啊哦,这意味着,软件不想理你,并向给你了个鄙视的眼神(请自己体会)。

抓不到地址很心酸的(自己去网页里面复制那也太low啦)。

肿么办,肿么办,肿么办???

之前已经说过了,视频地址链接并非唯一的手段,因为视频的中的id在好几个属性值里面都有包含,所有我们只需任意抓一个属性值,通过观察原始视频地址进行链接的拼接即可。

如果不想做复杂的字符串处理,那就抓最原始的名称吧。(这次目标是父节点MIAOPAI_player下的data-scid属性)。

mylinks<-read_html(url,encoding="utf-8")%>%html_nodes("div.videoCont>div.videoList>div.video>div.MIAOPAI_player")%>%html_attr("data-scid")

[1] "AUTy2nx4l-T~BhG-zX60wSDwwqoWfwpa" "ugJzN6LvH3emoPlSU2b52Cu-SbIQ5LFa" "wJ4AsVMgek6jp6lXDxIpXExCig9cVXo~" "I-J6u~qy7V5CpRIq-FoFA3pYtc6Yr0Sz"

[5] "pCLMPKezqWVWHyhjNHaRyKrX16APCeuw"

OK,完美搞定,接下来该干啥呢(快想快想)。(因为视频数量少,没有换页存储,所以这里不用构造换页请求,整个代码效率都提高了很多)

接下来当然是构造可用的视频地址啦,因为我们刚才抓的并非完整的可直接传递到视频源的地址,仅仅是视频的id而已。

好吧现在我们对比之前手工复制的视频源地址和这次抓到的视频id信息,观察规律。

AUTy2nx4l-T~BhG-zX60wSDwwqoWfwpa

http://gslb.miaopai.com/stream/AUTy2nx4l-T~BhG-zX60wSDwwqoWfwpa.mp4

好吧,这次是不是一看就看明白咋回事儿啦,没错,视频源地址就是在视频id的基础上左侧添加了秒拍服务端的视频流服务器主网址,右侧添加了.MP4的视频格式而已,OK,接下我们的任务就是构造可用的视频下载地址。

baseurl<-"http://gslb.miaopai.com/stream/"

mymvlinks<-paste0(baseurl,mylinks,".mp4")

OK两部搞定,敢不敢相信自己的眼睛哈哈。

[1] "http://gslb.miaopai.com/stream/AUTy2nx4l-T~BhG-zX60wSDwwqoWfwpa.mp4" "http://gslb.miaopai.com/stream/ugJzN6LvH3emoPlSU2b52Cu-SbIQ5LFa.mp4"

[3] "http://gslb.miaopai.com/stream/wJ4AsVMgek6jp6lXDxIpXExCig9cVXo~.mp4" "http://gslb.miaopai.com/stream/I-J6u~qy7V5CpRIq-FoFA3pYtc6Yr0Sz.mp4"

[5] "http://gslb.miaopai.com/stream/pCLMPKezqWVWHyhjNHaRyKrX16APCeuw.mp4"

如果不放心的话,可以使用这个地址再再浏览器中打开看一看,预览下是否可以观看视频。(放心吧我都替你试过了)

现在我们只是获取了视频下载地址,可是没有MV的歌名呀(命名和123最后下载完事你可以需要打开听一听才知道是啥歌,如果使用ID的话一串字母数字组合也很烦人)。

好吧索性再把名字趴下来:

可以看到每首MV下面都有个含歌名的句子,就抓这句文字就行。

image.png

myinfo<-read_html(url,encoding="utf-8")%>%html_nodes("div.viedoAbout")%>%html_text(trim = TRUE)

[1] "温暖女声陶心瑶翻唱薛之谦《方圆几里》                                 \n                                #陶心瑶第二自我##纪念青春的那些歌#"    

[2] "陶心瑶首张实体专辑《第二自我》众筹宣传片                                 \n                                #陶心瑶第二自我##纪念青春的那些歌#"

[3] "上课中《丑八怪》"                                                                                                                             

[4] "陶心瑶暖心翻唱JJ《她说》                                 \n                                #陶心瑶##林俊杰的第36页#"                          

[5] "这个《双截棍》也太柔了吧!唱的心都醉啦"   

抓完发现每一个句子里面的歌名都是带有书名号的(特么的中文的书名号怎么匹配内部中文呀,正则不会写~_~)

好吧,技不如人但是我勤快呀,就用字符串匹配函数一个个匹配吧!

mymvname<-c()

for (i in 1:length(myinfo) ){

mymvname[i]<-substr(myinfo[i],regexpr("《",myinfo[i])[1]+1,regexpr("》",myinfo[i])[1]-1)

}

匹配完成之后,把MP4的后缀带上。

mymvname<-paste0(mymvname,".mp4")

[1] "方圆几里.mp4" "第二自我.mp4" "丑八怪.mp4"   "她说.mp4"     "双截棍.mp4"  

都到了这份上了你还想怎样--好吧我只想把小姐姐的视频下载下来而已。

爬虫第三部:构建下载函数:

因为是五个视频文件要下载,所以需要构造循环下载函数:

for (i in 1:length(myinfo)){

download.file(mymvlinks[i],mymvname[i],mode="wb")

}

image.png

image.png

image.png

OK,爬完收工,是不是很简单呀,感觉去找个音乐网站试一下吧,这个夏天,让音乐来的更猛烈一些吧!

ps(最近实在太忙了,下次给小伙伴儿们爬B站哈哈~)


推荐 0
本文由 杜雨 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册