python 视频解析_Python爬虫-深度视频解析NAVER V(VLIVE)网站

这几天突发奇想,前一天晚上看了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一份了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Java中对接NAVER发送手机验证码通常涉及以下几个步骤: 1. 注册并获取API密钥:首先,你需要在NAVER开发者平台注册应用并创建一个项目,以便获取到App Key和App Secret等必要的认证信息。 2. 使用第三方库:NAVER可能提供官方的SDK或者推荐一些支持HTTP请求的库,如OkHttp、Apache HttpClient或Spring的RestTemplate,用于发送HTTP POST请求。 3. 设定URL和请求体:构建请求URL,一般包含API端点,例如`https://openapi.naver.com/v1/auth/otp/send`。请求体应该包含手机号、回调URL(如果有的话)以及任何其他认证参数。 4. 实现验证码生成:根据NAVER的要求,可能需要随机生成6位数字作为验证码,并将其编码成base64或其他格式添加到请求体中。 5. 请求携带认证:将App Key、App Secret和任何必要的令牌(如OAuth访问令牌)以安全的方式附加到请求头或请求体中。 6. 发起POST请求:使用选择的库发起HTTPS POST请求,传入上述设置好的参数。 示例代码(简化版): ```java import okhttp3.OkHttpClient; import okhttp3.Request; public void sendVerificationCode(String phoneNumber) { OkHttpClient client = new OkHttpClient(); String apiKey = "your_api_key"; String appSecret = "your_app_secret"; String url = "https://openapi.naver.com/v1/auth/otp/send"; String requestBody = "{\"mobile\":\"" + phoneNumber + "\", \"callbackUrl\":\"http://your/callback\"}"; Request request = new Request.Builder() .url(url) .post(RequestBody.create(MediaType.parse("application/json"), requestBody)) .addHeader("X-Naver-Client-Id", apiKey) .addHeader("X-Naver-Client-Secret", appSecret) .build(); try (Response response = client.newCall(request).execute()) { // 检查响应状态码和处理结果 System.out.println(response.body().string()); } catch (IOException e) { e.printStackTrace(); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值