利用爬虫将影片网站打包成一个APP

365bet手机版网址:2018-09-05 365bet体育在线平台: 7354 次
  以前总是通过HDMI线将电脑连接电视看剧看影片,但是每次想快进啊进行一些操作过于麻烦,手机上的APP的资源又太少,于是想到将影片网站打包成一个APP!
  APP已经差不多做好了,近来也比较忙,没什么时间去弄,界面很丑,这里我讲讲我的主要思路,自己动手才有乐趣!
  在做之前整理下思路,怎样才能把网站搬到APP上呢?
  有两个方法:
  1.通过WebView简单粗暴
  将整个网站搬过来,几十行代码搞定!但是用户体验不是很好、广告多、字体小、操作也不是很方便。
  2.利用爬虫,需要什么爬什么!然后将数据显示在自己做的界面上!
  Let'go
  首先365bet体育在线平台搭一个界面大概的界面出来。
  [Java]纯文本查看复制代码
  一个4个Fragment绑定一个activity,每个fragment。
  上面是个recyclerview,底部是BottomTabBar。
  界面搭好了就差数据了
  导入图片加载和网络请求依赖
  compile 'com.squareup.picasso:picasso:2.5.2'
  compile 'com.mcxiaoke.volley:library:1.0.19'打开网站,F12查看当前网页源码,找到需要的数据
  首先通过网络请求获取整个页面数据,然后正则匹配找到365bet体育在线平台需要的数据、图片、链接、标题和评分,新建一个Bean类将数据储存到里面。
  [Java]纯文本查看复制代码
  通过recyclerView将数据显示到界面上,通过接口回调设置点击事件点击图片跳转到详情页
  [Java]纯文本查看复制代码



  为了便于维护将365bet体育在线平台封装成基类,然后将影片、电视剧和动漫页面继承,稍加改动,这样4个页面就出来了。
  [Java]纯文本查看复制代码
  第二大步:
  然后365bet体育在线平台来做详情页
  通过Intent获取到上个页面传递过来的URL,图片链接和标题,通过URL获取整个页面数据,然后正则匹配,其他需要的数据。
  [Java]纯文本查看复制代码

  第三大步:
  重要就是播放页面了,这里费了点时间。
  刚开始我也是按照前2步骤去操作,但是发现怎么都爬不到获取不到链接打开原网站才发现播放链接是动态加载的而且还3层加密了!MMP
  打开播放页面,F12选择sources,查看源码:
  <div >就是播放页面,但是里面空的,证明这是动态加载了这个标签。
  继续看源码找script标签看下里面做了什么:
  167%256Bx%256BlDvoVW%256B1dTw8xE.mkyw是第一加密后的链接。至于怎么来的,365bet体育在线平台不管他,这个数据是可以爬出来的。
  unescape()方法是JS自带解密方法。
  set_code()再次加密
  找到了主要的逻辑,顺着思路往下走,在netWork刷新页面看下加载了那些东西,主要看js,发现加载了这么几个东东。
  一个个查看吧,里面搜索set_code这个方法
  找到了set_code方法:
  大概看了下,里面又调用了____e() 和 ____d()
  以为这样就找到了链接,我刚开始也这么觉得,但是在网页上打开还是错误的
  继续回到sources,查看源码:
  这个才是主要动态加载标签的主要逻辑,在源码了找到Play/23.js 
  将之前加密的URL再一次拼接!
  找到了加密方法,那365bet体育在线平台来做一个工具类将其解密.
       [HTML]纯文本查看复制代码

  接下来将HTML放到asset/index.html
  [zava]纯文本查看复制代码
  这样就可以通过webView与本地的HTML文件交互,
  接下来获取到播放页面第一次加密的链接,
  [Java]纯文本查看复制代码

  调用html自己写的工具类getUrl方法,将获取到的参数传进去,然后再加载网页。
  大功告成!
分享到:
×

微信扫一扫分享

XML 地图 | Sitemap 地图