★立即注册★

QQ登录

只需一步,快速开始

就爱江湖-应用库-技术分享资源网-Www.92Jh.Cn

查看: 775|回复: 0

[Android] 利用爬虫将电影网站打包成一个APP【一】

[复制链接]
发表于 2019-8-22 10:46:43 | 显示全部楼层
本帖最后由 q3196355 于 2019-8-22 10:50 编辑

以前总是通过HDMI线将电脑连接电视看剧看电影,但是每次想快进啊进行一些操作过于麻烦,手机上的APP的资源又太少,于是想到将电影网站打包成一个APP!
APP已经差不多做好了,最近也比较忙,没什么时间去弄,界面很丑,这里我讲讲我的主要思路,自己动手才有乐趣!
在做之前整理下思路,怎样才能把网站搬到APP上呢?
有两个方法:
1.通过WebView简单粗暴将整个网站搬过来,几十行代码搞定!但是用户体验不是很好,广告多,字体小,操作也不是很方便
2.利用爬虫,需要什么爬什么!然后将数据显示在自己做的界面上!

Let'go
首先我们搭一个界面大概的界面出来

[ButterKnife.bind(this);
      mTabBar.init(getSupportFragmentManager())
              .setImgSize(50, 50)
              .setFontSize(10)
              .setTabPadding(4, 6, 10)
              .setChangeColor(Color.RED, Color.DKGRAY)
              .addTabItem("首页", R.mipmap.ic_launcher_round, HomeFragment.class)
              .addTabItem("电影", R.mipmap.ic_launcher_round, MoveFragment.class)
              .addTabItem("电视剧", R.mipmap.ic_launcher_round, TVplayFragment.class)
              .addTabItem("动漫", R.mipmap.ic_launcher_round, CartoonFragment.class);

一个4个Fragment绑定一个activity,每个fragment
上面是个recyclerview
底部是BottomTabBar

利用爬虫将电影网站打包成一个APP【一】图片ID:1974

界面搭好了就差数据了
导入图片加载和网络请求依赖
compile 'com.squareup.picasso:picasso:2.5.2'
compile 'com.mcxiaoke.volley:library:1.0.19'打开网站,F12查看当前网页源码,找到需要的数据
利用爬虫将电影网站打包成一个APP【一】图片ID:5381
首先通过网络请求获取整个页面数据,然后正则匹配找到我们需要的数据,图片,链接,标题和评分,新建一个Bean类将数据储存到里面


public class DataBean {
    private String DataName;
    private String DataScore;
    private String DataImg;
    private String DataNetWork;

    public String getDataName() {
        return DataName;
    }

    public void setDataName(String dataName) {
        DataName = dataName;
    }

    public String getDataScore() {
        return DataScore;
    }

    public void setDataScore(String dataScore) {
        DataScore = dataScore;
    }

    public String getDataImg() {
        return DataImg;
    }

    public void setDataImg(String dataImg) {
        DataImg = dataImg;
    }

    public String getDataNetWork() {
        return DataNetWork;
    }

    public void setDataNetWork(String dataNetWork) {
        DataNetWork = dataNetWork;
    }
}

通过recyclerView将数据显示到界面上,通过接口回调设置点击事件点击图片跳转到详情页

RequestQueue queue = Volley.newRequestQueue(getActivity());
        MyStringRequest stringRequest = new MyStringRequest(getHosturl(), new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
                String regEx = "<li><div class=li-box><div class=img-box></div><a href=\"(.+?)\"><img src=\"(.+?)\" onerror=\".+?\"><span class=back></span><span>(.+?)</span></div><P><a href=\".+?\" target=\"_blank\">(.+?)</a></P></li>";

                Pattern pattern = Pattern.compile(regEx);
                mMatcher = pattern.matcher(response);
                if (mData != null) {
                    mData.clear();
                }
                new Thread(new Runnable() {
                    @Override
                    public void run() {
                        while (mMatcher.find()) {
                            //Log.e(TAG, matcher.group());
                            /*Log.e(TAG, mMatcher.group(1));
                            Log.e(TAG, mMatcher.group(2));
                            Log.e(TAG, mMatcher.group(3));
                            Log.e(TAG, mMatcher.group(4));*/
                            DataBean dataBean = new DataBean();
                            dataBean.setDataNetWork(mMatcher.group(1));
                            dataBean.setDataImg(mMatcher.group(2));
                            dataBean.setDataName(mMatcher.group(4));
                            dataBean.setDataScore(mMatcher.group(3));
                            mData.add(dataBean);
                        }
                    }
                }).start();
                if (mHomeAdapter == null) {
                    mHomeAdapter = new homeAdapter(getContext(), mData, mGridLayoutManager);
                }
                mRecyclerView.setAdapter(mHomeAdapter);
                mHomeAdapter.notifyDataSetChanged();
                mTvThisPage.setText("第"+mThisPage+"页");
                Toast.makeText(getContext(), "第" + mThisPage + "页", Toast.LENGTH_SHORT).show();
                mHomeAdapter.setItemClickListener(new homeAdapter.OnItemClickListener() {
                    @Override
                    public void onItemClick(int position) {
                        String url = mData.get(position).getDataNetWork();
                        String title = mData.get(position).getDataName();
                        String img_url = mData.get(position).getDataImg();
                        String requestUrl = getHosturl() + url;
                        //Toast.makeText(getContext(), requestUrl, Toast.LENGTH_SHORT).show();
                        Intent intent = new Intent(getContext(), DetailsActivity.class);
                        intent.putExtra("title", title);
                        intent.putExtra("img_url", img_url);
                        intent.putExtra("requestUrl", requestUrl);
                        startActivity(intent);
                    }
                });

                //Log.e(TAG, response);

            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                Log.e(TAG, error.getMessage(), error);
                mThisPage--;
                Toast.makeText(getContext(), "网络不稳定!加载失败!请稍后重试!", Toast.LENGTH_SHORT).show();

            }
        });
        queue.add(stringRequest);
    }




利用爬虫将电影网站打包成一个APP【一】图片ID:7444
利用爬虫将电影网站打包成一个APP【一】图片ID:12

上一篇:猫眼电影top100海报爬取和生成照片墙
下一篇:利用爬虫将电影网站打包成一个APP【二】

发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案,如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请在帖子回复【已解决】。

游客
回复
您需要登录后才可以回帖 登录 | ★立即注册★

免责声明
就爱江湖所发布的一切软件逆向解密分析文章及视频、破解补丁、注册机和注册信息,仅限用于学习和研究目的。不得将上述内容用于商业或者非法途径!否则,一切后果请用户自负!
本站信息来自互联网,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请购买注册正版软件,获得正版优质服务!
如有侵权请邮件或QQ与我们联系处理。

联系QQ:2710763
邮箱:2710763@qq.com

手机版|小黑屋| 就爱江湖资源分享网 |网站地图 |粤公网安备44180302000217号 | 粤ICP备2025451632号

GMT+8, 2025-9-9 18:45

Powered by Discuz!

© 2001-2020 Comsenz Inc.

快速回复 返回顶部 返回列表