灵感主要是来源于我的小朋友们,总是找我问有没有各种vip,每次总是给他们找个资源就乐呵呵的看去了,嗯,我不嫌麻烦,他们嫌麻烦了,于是想动手给他们利用手里的资源(主要是一些开放网站)封装一个app。
本来一直做java,有幸做过一段时间android,搁这么久再拿起来,还是挺生疏的。先说一下用到的东西吧,很简单,后台请求资源网站,jsoup进行解析,简单的一个网址小趴虫,播放器是android的dkplayer,网络请求okhttp,简单封装了一下,大体思路就是这样,看详细的吧
一、爬虫
我也不知道这算不算是爬虫,就先认为是个爬虫吧,首先我查看了一下资源网站的搜索,拿到搜索需要的三个条件:url、header、parameters,举个栗子,比如我们现在需要解析简书的搜索结果,获取搜索后的信息,首先查看他的地址(F12会用吧)
访问地址喏,上边的地址一目了然,URL:https://www.jianshu.com/search/do?q=1&type=note&page=1&order_by=default
参数列表这两个都没什么说的,还剩下一个header
header这个header,我们需要去用postman测试一下了,一般header里需要的也就cookie、host、origin、referer这几个,postman简单试一下就可以知道需要哪几个header,值得注意的是,一般没有token验证的网址,都是可以采取这种方式的,token验证的就麻烦一些了
那么拿到了之后,我们在后台中请求这个地址,这里我只帖一下简单的代码
String urlPage ="www.baidu.com"; //地址用baidu代替了
Map parameters = MapUtil.newHashMap(3);
parameters.put("wd", keyword);
parameters.put("submit", "search");
Map headers = MapUtil.newHashMap(3);
parameters.put("Origin", URL_PRE);
String result = HttpUtil.doPost(urlPage, headers, parameters); //http请求,可以用你自己的请求方式
到这里,如果你的result如果有东西并且是你想要的,那么你的第一步就完成了,拿到result我们要看一下是json格式的数据还是直接返回的整个页面,这里我简单写一下两种方式的解析吧:
1.返回json格式数据
这种方式是最好的,直接转换成json对象就可以用了
JSONObject jsonObject = JSONObject.parseObject(result);
2.返回html页面
如果是这种返回html的,需要我们用jsonup进行解析了,具体解析:
Document htmlDoc = Jsoup.parse(result);
Elements videoList = htmlDoc.select(".xx"); //这里的xx其实就是html选择器
需要的信息,需要你精确的找到信息的在html里的位置,可以通过class、id等,并且要确定一下这些元素的位置是否会变,保证每次爬取时的数据不会出错,jsoup的用法我就不在这里讲了,相信api比我详细
二、整合信息
前边我们通过爬取搜索结果,获取到搜索结果,这是第一步,还要通过搜索结果获取视频的地址,基本思路跟爬取搜索结果是一个,这里不作过多说明。
三、播放器
对于android,很多东西不是那么熟悉,问了公司android大佬,给我推荐了一个视频播放器:dkplayer,使用也很简单的,有一点要注意的就是引用dkplayer的时候记得引进解码
implementation'com.github.dueeeke.dkplayer:dkplayer-java:3.2.6'
implementation'com.github.dueeeke.dkplayer:dkplayer-ui:3.2.6'
implementation'com.github.dueeeke.dkplayer:player-exo:3.2.6'
implementation'com.github.dueeeke.dkplayer:player-ijk:3.2.6'
注意:dkplay没有下一集,有个多视频播放,放完一个接着放,这就很难受了,还有就是dkplay的解析地址是文件地址(带后缀名的那种,http://xxxx.mp4),给我坑了一把
总结:
由于代码写的不是很优,就不贴过多的了,整个思路就是这样,也算记录一下,有说的不对的地方,欢迎指正。
最后,看下成果:
首页 搜索结果 详情
网友评论