Android学习------抓取Android开发技术周报(一)

前言:

认为开发技术周报里面的内容挺不错的, 每次出来了都要去看看,还是能学到不少东西,也不知道有没有app 我也没去找,试着自己写一个吧,用一下以前没用过的技术。试着做做嘛,动手才能学得更快嘛。

准备工作:

本次抓取的Android开发技术周报网址为:http://androidweekly.cn/  谢谢@脉脉不得语

运用到的一点技术为:RxJava RxAndroid Retrofit2 Jsounp .... 如何使用就靠自己百度Google了。我也是这样来的啊。

开发工具:AndroidStudio

其他:好像没了。

开始:

这2天完成了2个页面,但是后面应该没啥页面了  只能在优化一下,先看现在的UI   ,比较丑 勿怪。


Android学习------抓取Android开发技术周报(一)_第1张图片

Android学习------抓取Android开发技术周报(一)_第2张图片


现在看到效果了,我们就来看下第一张图的实现,其实第一张图和第二张图的代码基本一样  只是解析的地方不同而已。


先看看目录结构:

Android学习------抓取Android开发技术周报(一)_第3张图片


就2个Activity  

再来看看数据怎么获取的---:

这里运用了Retrofit2 和RxJava 实现数据获取 和运用Jsoup实现数据解析

private void getData(int pageNo) {
    KFZBAPI api= KFZBService.create();
    api.getMainDirectory4Html(pageNo)
            .observeOn(Schedulers.io())
            .subscribeOn(Schedulers.io())
            .map(new Func1<String, List<DirectoryBean>>() { //转换
                @Override
                public List<DirectoryBean> call(String s) {
                    String html=s;
                    html=html.replace("tag-androiddevspecialweekly", APPContent.ITEM_CLASSNAME);
                    Document document= Jsoup.parse(html);
                    Elements elements=document.getElementsByClass(APPContent.ITEM_CLASSNAME);
                    return getData(elements);
                }
            }).observeOn(AndroidSchedulers.mainThread())
            .subscribe(new Action1<List<DirectoryBean>>() {
                @Override
                public void call(List<DirectoryBean> directoryBeans) {
                    listView.setAdapter(new DirectoryAdapter(MainActivity.this, directoryBeans, R.layout.item));
                }
            }, new Action1<Throwable>() {
                @Override
                public void call(Throwable throwable) {
                    textView.setText("throwable:" + throwable.toString());
                }
            });
}

具体解析代码如下:

//解析数据
private List<DirectoryBean> getData(Elements elements) {
    if(elements!=null&&elements.size()>0){
        for(int i=0;i<elements.size();i++){
            Element tag_androiddevweekly_element=elements.get(i);
            Element tag_a_element=tag_androiddevweekly_element.child(0).child(0).child(0); //获取到a 标签 --header---->H2---->a
            String  post_title=tag_androiddevweekly_element.child(0).child(0).text(); //title
            String  post_url=tag_a_element.attr("href"); //链接
            String  post_excerpt=tag_androiddevweekly_element.child(1).text();
            String post_date=tag_androiddevweekly_element.child(2).child(3).text();
            DirectoryBean directoryBean=new DirectoryBean();

            directoryBean.setPost_title(post_title);
            directoryBean.setPost_url(post_url.replace("/",""));
            directoryBean.setPost_excerpt(post_excerpt);
            directoryBean.setPost_date(post_date);
            listBean.add(directoryBean);
        }
    }
    return listBean;
  }


关键代码就这2段 


总结:

就这样就完啦?是啊,这样就完了 感觉要讲的很多,却不知道从何处开始讲,但是代码也就这2块做了些工作。


具体的去github (https://github.com/zhangiqlin/kfzb)看看吧  嘿嘿。 有啥建议 不明白的可以给我说下, 没事的时候再改改,这个主要是为了练习一下没用过的库。




你可能感兴趣的:(Android学习------抓取Android开发技术周报(一))