点击上方“码农突围”,马上关注

这里是码农充电第一站,回复“666”,获取一份专属大礼包

真爱,请设置“星标”或点个“在看”

作者: 绘你一世倾城

来源:https://dwz.cn/4gurLbiC

本文属原创投稿,作者wst,首发于公众号:java版web项目

前几天有个小姐姐想看《天使陷落》的大片问有没有资源的渠道。本着不给广大程序小老哥的脸,想也没想的就答应给小姐姐找资源。但是凄惨的是把以前经常用的网站烦了个遍都没有。

这点小问题肯定难不到勤奋的小老弟,一通谷歌、百度、dogedoge终于找了可靠资源。

既然现在资源这么匮乏,网站都找到了何不试试抓包看看接口。说干就干,按照一贯的操作流程,打开Chrome->开发者工具->NextWork->All

经过一顿猛操作终于于发现接口,其实就是通过调用https://xxx/jx.php?do=h5&id=视频唯一标识来获取到原视频播放地址。

到这一步的时候,已经是觉得都成了,可是打开Postman跑接口一看,人都傻了。

根本就没有返回视频播放源的地址,当然对于爬虫分析都得有耐心,像这种通过Postman跑出来的数据和浏览器控制台抓的数据不一样,大几率就是header参数缺失的问题,知道问题出在哪里问题就迎刃而解。然后一个一个参数的copy过来果不其然少了一个referer参数。

接口参数抓到了就开始拿到我们需要的video路径。我们请求接口的参数返回的是html代码块。

<!DOCTYPE html>
<html><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no"><meta name="referrer" content="never"><title>电影盒子</title><link rel="stylesheet" href="https://cdn.bootcss.com/dplayer/1.22.2/DPlayer.min.css"><style type="text/css">
body, html, .dplayer {padding: 0;margin: 0;width: 100%;height: 100%;background-color:#000;}
a {text-decoration: none;}
</style></head><body><div id="player" class="dplayer"></div><script src="https://cdn.bootcss.com/flv.js/1.4.2/flv.min.js"></script><script src="https://cdn.bootcss.com/dplayer/1.22.2/DPlayer.min.js"></script><script type="text/javascript">var isiPad = navigator.userAgent.match(/iPad|iPhone|Android|Linux|iPod/i) != null;if(isiPad){document.getElementById('player').innerHTML = '<video src="http://sh-download.weiyun.com/ftn_handler/d77c3b67df5795dcbdd3a69d3cf3503753d6559d01114d3904e741eb27d266c9/%E7%83%88%E7%81%AB%E8%8B%B1%E9%9B%842019.mp4" controls="controls" preload="preload" poster="http://jx.178du.com/Dplayer/loading.gif" width="100%" height="100%" x-webkit-airplay="allow"></video>';}else {var pic = "";var dplayer = new DPlayer({element: document.getElementById("player"),autoplay: true,hotkey: true,preload: 'auto',video: {url: 'http://sh-download.weiyun.com/ftn_handler/d77c3b67df5795dcbdd3a69d3cf3503753d6559d01114d3904e741eb27d266c9/%E7%83%88%E7%81%AB%E8%8B%B1%E9%9B%842019.mp4',pic: 'http://jx.178du.com/Dplayer/loading.png'}});}</script><script>
var _hmt = _hmt || [];
(function() {var hm = document.createElement("script");hm.src = "https://hm.baidu.com/hm.js?71034aa175241a731523ac24bdd3406d";var s = document.getElementsByTagName("script")[0];s.parentNode.insertBefore(hm, s);
})();
</script></body>
</html>

这个时候我们可以通过正则从下面代码块里,拿到video标签里面的src值。

<video src="http://sh-download.weiyun.com/ftn_handler/d77c3b67df5795dcbdd3a69d3cf3503753d6559d01114d3904e741eb27d266c9/%E7%83%88%E7%81%AB%E8%8B%B1%E9%9B%842019.mp4" controls="controls" preload="preload" poster="http://jx.178du.com/Dplayer/loading.gif" width="100%" height="100%" x-webkit-airplay="allow"></video>

说干就干,打开强大的IEDA,新建Spring boot项目。在Maven配置pom.xml加入Jsoup解析插件。

<dependency><groupId>org.jsoup</groupId><artifactId>jsoup</artifactId><version>1.8.1</version>
</dependency>

先通过Jsoup调用之前抓取到的接口解析得到Html。

/*** https://www.fenggoudy.com** @Param null* @Author:tianminghai* @Date:5:28 PM 2019/11/15*/public static String getVideoUrlForFengGou(String apiUrl,String refeurl)throws Exception{// 参数详情 https://www.fenggoudy.com 采集apiUrl = "https://jx33.178du.com/jx.php?do=h5&id=7aa7f493692edb4a.mp4";refeurl = "https://www.fenggoudy.com";Document html = null;try {html = Jsoup.connect(apiUrl).header("referer",refeurl).get();} catch (IOException e) {throw e;}String videoUrl = getHtmlVideoStr(html.outerHtml()).get("src");System.out.print("------原始数据:"+getHtmlVideoStr(html.outerHtml()));if (videoUrl.contains("download.weiyun.com")){return videoUrl;}else {throw new Exception("数据解析问题");}}

具体通过正则表达式解析网页得到video中的src值方法。

/***得到html中的 video src** @Param null* @Author:tianminghai* @Date:5:25 PM 2019/11/15*/public static Map<String, String> getHtmlVideoStr(String htmlStr) {Map<String, String> pics = new HashMap<String, String>();String regEx_video="<video.*src\\s*=\\s*(.*?)[^>]*?>";Pattern p = Pattern.compile(regEx_video,Pattern.CASE_INSENSITIVE);Matcher m = p.matcher(htmlStr);String video="";Map<String, String> maps = new HashMap<String, String>();while (m.find()) {video=m.group();Matcher mPoster = Pattern.compile("poster\\s*=\\s*\"?(.*?)(\"|>|\\s+)").matcher(video);Matcher mSrc = Pattern.compile("src\\s*=\\s*\"?(.*?)(\"|>|\\s+)").matcher(video);String poster ="";String src="";while (mPoster.find()){poster=mPoster.group(1);}while (mSrc.find()){src=mSrc.group(1);}maps.put("poster", poster);maps.put("src", src);maps.put("srcs", src);}return maps;}

这个时候一切都准备就绪就差把数据通过接口来实现了,新建一个Controller。

@RestController
public class VideoController {@RequestMapping(value = "/video")public ResultModel test(){ResultModel resultModel = new ResultModel();resultModel.setMsg("成功");try {resultModel.setCode(JsonConfigModel.SUSSESS);JSONObject obj = new JSONObject();obj.put("url",VideoUtils.getVideoUrlForFengGou("",""));resultModel.setObj(obj);} catch (Exception e) {resultModel.setCode(JsonConfigModel.ERROR_VIDEO);}return resultModel;}
}

小程序访问接口看看到底能不能观看视频。新建一个小程序项目,添加一个视频播放组件。Vide.WXML;

<cu-custom bgColor="bg-main" isBack="{{true}}"><view slot="backText">返回</view><view slot="content">列表</view></cu-custom><view class="p tc"><video id="myVideo" src="{{voideUrl}}" enable-danmu danmu-btn controls></video>
</view>

Video.js

var http = require('../../utils/httputils.js');Page({data: {voideUrl:''},onLoad: function (options) {var that = this;console.log("-------")var prams = {username: "1111",password: "123456"}http.getRequest("http://192.168.0.103:8081/video", prams,function (res) {console.log("----aa---"+res.obj.url)that.setData({voideUrl:res.obj.url,})},function (err) {})},onReady() {}});

万事具备,来给我动作整齐划一的走起!

那么问题来了,今天下午小姐姐约我去吃饭,老哥们能否指点招?

说句题外话,有不少人想加鱼哥微信,鱼哥姑且放出来,但是坑位有限哦

有热门推荐????

1、阿里巴巴Java 程序员常用的 10 款开源工具!用好了,事半功倍!

2、年底再现暴力裁员!患病员工被关小黑屋,摄像头监控,工作量超其他人!

3、花了三个月终于把所有的 Python 库全部整理了!可以说很全面了

4、工作9年程序员去华为面试要一万月薪,被淘汰后才发现:要少了!

Spring boot + Jsoup 搭建高清视频解析系统接口只需1分钟相关推荐

  1. 只需10分钟,给你全世界!水经注全球三维离线GIS系统

    概述 对于有高标准保密要求的企事业单位来讲,单位内部的网络在物理上就必须与互联网进行隔离,外部数据通常只能通过刻录光盘的形式将数据导入到局域网内部. 如U盘.硬盘.笔记本电脑等可读写设备,就完全禁止带 ...

  2. 基于Spring Boot技术栈博客系统企业级前后端实战之课程导论(零)

    零.说明(必读) 一.课程概述 1.1 名称 1.2 功能 1.3 技术点 1.4 目标 二.核心功能 2.1 用户管理 2.2 安全设置 2.3 博客管理 2.4 评论管理 2.5 点赞管理 2.6 ...

  3. 自荐Mall4j项目一个基于spring boot的Java开源商城系统

    前言 Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样 ...

  4. 如何利用Spring Boot 微信点餐开源系统

    由于细节内容实在太多啦,所以只把部分知识点整理出来粗略的介绍,每个小节点里面都有更细化的内容! 接下来开始分享啦 架构 前后端分离: 补充: setting.xml 文件的作用:settings.xm ...

  5. spring boot编写并运行HelloWorld服务接口

    spring boot编写并运行HelloWorld服务接口 在主程序上要加包扫描注解@ComponentScan("com.example.demo1") package com ...

  6. Spring Boot(18)---启动原理解析

    Spring Boot(18)---启动原理解析 前言 前面几章我们见识了SpringBoot为我们做的自动配置,确实方便快捷,但是对于新手来说,如果不大懂SpringBoot内部启动原理,以后难免会 ...

  7. 【Spring Boot】使用Spring Boot来搭建Java web项目以及开发过程

    [Spring Boot]使用Spring Boot来搭建Java web项目以及开发过程 一.Spring Boot简介 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来 ...

  8. Spring Boot企业微信点餐系统

    Spring Boot企业微信点餐系统 网盘地址:https://pan.baidu.com/s/1kcsDXp5C7QiJpTnpdd41Ng 密码: qhxb 备用地址(腾讯微云):https:/ ...

  9. 基于spring boot的婚纱摄影约拍系统

    基于spring boot的婚纱摄影约拍系统主要实现以下几种功能 后台 1.摄影师管理: ① 新增摄影师,填写摄影师个人信息和上传照片 ② 修改摄影师信息 ③ 摄影师作品管理,上传摄影师拍摄作品 ④ ...

最新文章

  1. swagger使用指南
  2. VB.NET版机房收费系统—DataGridView应用
  3. awk按ip统计日志数
  4. footer bar in SAP Fiori as a service
  5. python基础教程zip密码_python基础教程Python实现加密的RAR文件解压的方法(密码已知)...
  6. java rmi 多ip_在rmi连接中客户端指定一个ip地址,但程序执行中却转换成另一个地址...
  7. 物联网核心安全系列——智能汽车安全防护的重要性
  8. 转 海量数据处理(2)
  9. java中的@Override标签
  10. hdu 5306 Gorgeous Sequence(区间最值更新+求和)
  11. Atitit nlp 自然语言处理的艺术 attilax著作 v2 t55.docx Atitit nlp 自然语言处理attilax总结 目录 1.1. 主要范畴 1 1.2. 研究难点
  12. 数据清洗工具:OpenRefine的使用入坑DIY
  13. 改进YOLOv7系列:26.CVPR2022. ConvNeXt结合YOLOv7 | 基于ConvNeXt结构 构建 CNeB 模块
  14. 应届生offer指南
  15. 仿淘宝ViewPager左滑加载详情界面
  16. 北斗组网大功告成!你的手机真的能连上北斗吗
  17. STM32F103系列GPIO的一些基本概念和知识
  18. 电脑计算机不显示桌面了怎么办,电脑不显示桌面黑屏了 电脑黑屏不显示桌面怎么办 - 云骑士一键重装系统...
  19. 1005错误解决办法
  20. 亚马逊云科技2022热招岗位

热门文章

  1. vbs 产生随机数
  2. 非常轻巧的GIS数据转换器,中文的
  3. 打造爆文的8个软文营销写作技巧,提升你的文案写作能力
  4. 可燃气体泄漏监控报警系统_独立式可燃气体泄漏探测报警系统软件整体解决方案
  5. spring data jpa 多对多查询
  6. java中po_Java中PO,DO,DTO,VO的概念
  7. 爵士乐里全用13和弦吗?_用微妙的视差爵士化静态网页
  8. 新网站多久被google收录?谷歌当天收录网站靠谱吗?
  9. CF3B Lorry
  10. 解决各种IE兼容问题,IE6,IE7,IE8,IE9,IE10