这几天突发奇想,前一天晚上看了Python爬虫相关的视频,以及昨天晚上完成初步的代码功能实现,1.0版本就此诞生了。
首先进行申明或提示:我列表中的粉丝可能对这篇文章看不大懂,如有兴趣可继续阅读;
未经JTY起风了许可,禁止将此篇文章转载;
代码纯手打,纯为自己的想法进行编写,如有雷同纯属意外。
V网站视频相关分析
这次针对进行解析的网站为‘VLIVE’,是韩国一家艺人直播平台。VLIVE首页
那么,如何对这个平台进行解析呢?首先分为几个步骤:进入某一个视频,查看源代码是否有src源地址;
进入某一个视频,打开控制台F12,network标签进行抓包,看是否有包含源地址信息的文件传入,若有,则进行分析。
在经过我的分析之厚,上述条件1中并没有源地址。然而,我在第2条件中抓到了相关数据json文件。此处需要使用谷歌内核的浏览器打开F12进行抓包
双击打开此文件,则进入第二个网页,此网页为服务器返回的一个json页面,里面包含了所有该视频的信息:各种分辨率的源地址,m3u8的播放列表,以及我们最喜爱的中文字幕。视频分辨率相关的源地址信息
视频字幕相关的源地址信息
有了思路之后,我们再进行构思。应该如何写代码,代码中的json地址该怎么获得?
我们先对json的网页地址进行分析,我找出两个比较重要的参数。如下图。
我们需要获得上方的key值以及videoID值方可拼接出json地址。
那么,问题又来了。这两个值又要去哪里找呢!!!
我们一般写爬虫都需要看网页的源代码对吧?那么我们随便打开一个vlive网页,查看源代码。
看上图,红框框里的数据是不是似曾相识。OK!那我们得到了这两个数据,又有了json的地址,我们写代码的时候进行拼接不就完了吗~
码农的生活开始,这边题外话。我不是全职码农,我的专业是网络安全,写Python只是突发奇想,我这辈子不会写代码的,我不会真香的。
部分Python代码解释
req = urllib2.Request(input_url) #键入url值
req.add_header("user-agent", "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36") #V做了反爬虫机制过滤机器用户,所以得添加头信息模拟真实用户
html = urllib2.urlopen(req).read()#打开URL传入html
reg = r'vlive.video.init\(".*?"\, ".*?"\, ".*?"\, ".*?"\, ".*?"\,\n\t\t\t"(.*?)"\,\n\t\t\t"(.*?)"\,'#使用正则表达式匹配源代码中的两个参数,并且缓存至reg中
spi = re.findall(reg, html)[0]#寻找所有符合相关条件的数据并传入spi列表
json_url = 'https://global.apis.naver.com/rmcnmv/rmcnmv/vod_play_videoInfo.json?key='+spi[1]+'&pid=rmcPlayer_15450415010952367&sid=2024&ver=2.0&devt=html5_pc&doct=json&ptc=https&sptc=https&cpt=vtt&ctls=%7B%22visible%22%3A%7B%22fullscreen%22%3Atrue%2C%22logo%22%3Afalse%2C%22playbackRate%22%3Afalse%2C%22scrap%22%3Afalse%2C%22playCount%22%3Atrue%2C%22commentCount%22%3Atrue%2C%22title%22%3Atrue%2C%22writer%22%3Atrue%2C%22expand%22%3Atrue%2C%22subtitles%22%3Atrue%2C%22thumbnails%22%3Atrue%2C%22quality%22%3Atrue%2C%22setting%22%3Atrue%2C%22script%22%3Afalse%2C%22logoDimmed%22%3Atrue%2C%22badge%22%3Atrue%2C%22seekingTime%22%3Atrue%2C%22linkCount%22%3Afalse%2C%22createTime%22%3Afalse%2C%22thumbnail%22%3Atrue%7D%2C%22clicked%22%3A%7B%22expand%22%3Afalse%2C%22subtitles%22%3Afalse%7D%7D&pv=4.6.3&dr=1920x1080&cpl=zh_CN&lc=zh_CN&videoId='+spi[0]+'&cc=US'#拼接spi所找出的相关值取得该v地址的真实源地址信息即json
html_json = urllib2.urlopen(json_url)
h_json = json.loads(html_json.read())#此两行代码是将数据格式化,类似于字典
完整代码如下,由于Pycharm窗口限制,我使用idle打开编译环境:python2
最终运行效果,如下
代码还是有缺陷:没有GUI界面;
没有对input做www判断;
没有写下载代码;
到此,本文结束。喜欢TWICE的可以follow我咯,我不仅是个once,还是个有技术的once。会剪辑视频,会做字幕,会写代码,还会嘤嘤嘤。
最后,再次申明,未经本人的许可禁止转载。源代码已po出。想必有能力的人已经可以copy一份了。