|  | 
 
 发表于 2019-8-22 10:47:23
|
显示全部楼层 
 
上一篇:利用爬虫将电影网站打包成一个APP【一】下一篇:利用爬虫将电影网站打包成一个APP【三】| 首先通过网络请求获取整个页面数据,然后正则匹配找到我们需要的数据,图片,链接,标题和评分,新建一个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);
 }
 
 
   
 
 为了便于维护将首页封装成基类,然后将电影,电视剧和动漫页面继承,稍加改动,这样4个页面就出来了
 
 
 public class MoveFragment extends HomeFragment implements View.OnClickListener {
 
 @Override
 protected void intitView() {
 hostUrl = "http://m.yiybb.com/dianying/";
 super.intitView();
 mThisPage = 1;
 listTpye = "List_15_";
 mTvThisPage.setVisibility(View.VISIBLE);
 
 
 }
 
 @Override
 protected void initData() {
 super.initData();
 }
 
 @Override
 protected String setTitle() {
 return "电影";
 }
 
 @Override
 protected void setViibilly() {
 page.setVisibility(View.VISIBLE);
 }
 
 
 
 
 | 
 |