zoukankan      html  css  js  c++  java
  • 【Android 我的博客APP】1.抓取博客首页文章列表内容——网页数据抓取

    打算做个自己在博客园的博客APP,首先要能访问首页获取数据获取首页的文章列表,第一步抓取博客首页文章列表内容的功能已实现,在小米2S上的效果图如下:

    思路是:通过编写的工具类访问网页,获取页面源代码,通过正则表达式得到匹配的数据进行处理显示到ListView上

    简单说明下要点:
    1. 使用Apache HttpClient库实现GET请求。
    2. 异步请求处理。
    3. 正则表达式抓取自己需要的数据。

    使用Apache HttpClient库实现GET请求。

    使用Apache只需简单三步

    HttpClient httpClient = new DefaultHttpClient();  //创建一个HttpClient  
      
    HttpGet httpGet = new HttpGet(“http://www.cnblogs.com/yc-755909659/”); //创建一个GET请求  
      
    HttpResponse response = httpClient.execute(httpGet); //发送GET请求,并响应内容

    异步请求处理

    异步请求的实现也很简单,开辟新线程执行请求处理,请求完成通过Handler在主线程处理所获得的数据。具体看源代码中MainActivity.java 类代码。

    正则表达式抓取自己需要的数据

    访问我的博客主页查看网页源代码,很容易找到要抓取文章列表内容的格式都如下:

    <div class="postTitle">
                    <a id="homepage1_HomePageDays_DaysList_ctl00_DayList_TitleUrl_0" class="postTitle2" href="http://www.cnblogs.com/yc-755909659/p/4187155.html">【读书笔记《Android游戏编程之从零开始》】19.游戏开发基础(游戏音乐与音效)</a>
                </div>
                <div class="postCon"><div class="c_b_p_desc">摘要: 在一款游戏中,除了华丽的界面 UI 直接吸引玩家外,另外重要的就是游戏的背景音乐与音效;合适的背景音乐以及精彩的音效搭配会令整个游戏上升一个档次。在 Android 中。常用于播放游戏背景音乐的类是 MediaPlayer, 而用于游戏音效的则是 SoundPool 类。1. MediaPlayer...<a href="http://www.cnblogs.com/yc-755909659/p/4187155.html" class="c_b_p_desc_readmore">阅读全文</a></div></div>
                <div class="clear"></div>
                <div class="postDesc">posted @ 2014-12-30 12:16 Y灬叶超 阅读(45) 评论(0)  <a href ="http://i.cnblogs.com/EditPosts.aspx?postid=4187155" rel="nofollow">编辑</a></div>
                <div class="clear"></div>

    因此,得到正则表达式如下:

    "class="postTitle2" href="(.*?)">(.*?)</a>.*?摘要:(.*?)<a.*?posted @(.*?)Y灬叶超 阅读(.*?) 评论(.*?)<a";

    然后通过正则表达式得到匹配的数据,获取需要的数据

    /**
         * 联网获得数据
         * 
         * @return 数据
         */
        public static List<BlogListInfo> getBlogNetDate(String path, String regex) {
            List<BlogListInfo> result = new ArrayList<BlogListInfo>();
            String blogString = RemoveRN(http_get(path));
            Pattern p = Pattern.compile(regex);
            // 我的博客首页的源代码字符串
            Matcher m = p.matcher(blogString);
            while (m.find()) {// 循环查找匹配字串
                MatchResult mr = m.toMatchResult();
                BlogListInfo info = new BlogListInfo();
                info.setBlogUrl(mr.group(1));
                info.setBlogTitle(mr.group(2));
                info.setBlogSummary(mr.group(3));
                info.setBlogTime(mr.group(4));
                info.setBlogReadNum(mr.group(5));
                info.setBlogReply(mr.group(6));
                result.add(info);
            }
            return result;
        }

     源代码地址:https://github.com/YeXiaoChao/getcsdnlistview

    本文地址:http://www.cnblogs.com/yc-755909659/p/4195436.html

    PS:本文由Y灬叶小超原创,如有转载请注明出处,谢谢!

  • 相关阅读:
    如何:使用向导来处理项目模板 【转载】
    .NET : 如何在生成XML文档时绑定样式表
    如何在生产环境部署K2的流程
    SQL Server 数据库文档生成工具开源项目【合作邀请】
    新的纪元
    SharePoint : 谁说WSS不支持审核
    C++ : 类型的别名和对象的别名
    C++: 引用和地址运算符
    Infopath : 如何通过代码复制格式文本框的值
    正确地使用投影仪和移动硬盘
  • 原文地址:https://www.cnblogs.com/yc-755909659/p/4195436.html
Copyright © 2011-2022 走看看