Flex-CUBlog排行榜解析

不知道为什么一直有一个想法把CUBlog排行榜的数据提取出来放在Flex的DataGrid中浏览。上网看过了关于html解析有很多开源的比如 html parser等。但好像都要写蛮多的代码才能实现。一个比较简单快速的方法就是使用正则表达式了。刚学习,顺便练习下。效果图:
Flex-CUBlog排行榜解析 - ★小龙★ - 寂寞流浪儿

Flex和后台Java的沟通方式是采用remoteObject。直接贴代码把,很简单不用解释。
前台Flex处理:
 

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
    <mx:Style>

    </mx:Style>
    <mx:Script>
        <![CDATA[
        import mx.rpc.events.ResultEvent;
        import mx.collections.ArrayCollection;
        import com.adobe.serialization.json.JSON;

        [Bindable]
        private var dataArray:ArrayCollection;

        private function initDataGrid():void{
            dataArray = new ArrayCollection();
        }

        private function getBolgListFun():void{
            var blogIndex:int;
            blogIndex = showId.selectedIndex;
            getBlog.getList(blogIndex);
            labTxt.text="请稍候,正在读取博客列表...你选择查看"+showId.selectedItem.toString()+"的排行榜!";
        }
        private function getBlogListResult(event:ResultEvent):void{
            var rawArray:Array;
            var arraySize:int;
            var rawData:String = event.result as String;
            rawArray = JSON.decode(rawData) as Array;
            dataArray = new ArrayCollection(rawArray);
            arraySize = dataArray.length;
            labTxt.text="读取成功...";
        }
        ]]>
    </mx:Script>
    <mx:RemoteObject id="getBlog" destination="getBlogList" showBusyCursor="true" result="getBlogListResult(event)"/>
    <mx:Panel x="10" y="40" width="681" height="430" layout="absolute" title="CU博客排行版">
        <mx:DataGrid id="blogGrid" x="0" y="0" width="661" height="284" dataProvider="{dataArray}" creationComplete="{initDataGrid()}" verticalScrollPolicy="on" fontFamily="Times New Roman" fontSize="12" color="#0142FC">
            <mx:columns>
                <mx:DataGridColumn headerText="名次" dataField="no"/>
                <mx:DataGridColumn headerText="博客名称" dataField="blog" width="220"/>
                <mx:DataGridColumn headerText="用户名" dataField="user" width="80"/>
                <mx:DataGridColumn headerText="技术文章" dataField="technique"/>
                <mx:DataGridColumn headerText="总文章" dataField="total"/>
                <mx:DataGridColumn headerText="访问量" dataField="visit"/>
                <mx:DataGridColumn headerText="评论量" dataField="common"/>
                <mx:DataGridColumn headerText="推荐数" dataField="recommand"/>
            </mx:columns>
        </mx:DataGrid>
        <mx:Button id="getBtn" x="10" y="323" label="读取更新" width="474" height="35" click="getBolgListFun()" fontFamily="Times New Roman" fontSize="12" color="#02FEF5"/>
        <mx:Label id="labTxt" x="0" y="292" width="626" height="23" fontFamily="Times New Roman" fontSize="12" color="#FE0315"/>
        <mx:ComboBox x="492" y="323" width="134" height="35" fontSize="12" fontFamily="Times New Roman" color="#A103FC" selectedIndex="3" id="showId">
         <mx:dataProvider>
             <mx:Array>
                 <mx:String>技术文章</mx:String>
                 <mx:String>推荐总数</mx:String>
                 <mx:String>总文章数</mx:String>
                 <mx:String>总访问量</mx:String>
                 <mx:String>评论总数</mx:String>
             </mx:Array>
         </mx:dataProvider>
        </mx:ComboBox>
    </mx:Panel>

</mx:Application>

后台Java处理:

 

package cublog;
/*
 * @Author: yexin218
 * @Email:feixianyexin@qq.com
 */

import java.net.*;
import java.io.*;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

public class PaiHangBang {
    public static void main(String[] args){
        PaiHangBang p = new PaiHangBang();
        System.out.println(p.getList(3));
    }
    public String getList(int selectIndex){
        String blogList="";
        int showBlogNo=25;
//the no of blog to show

        StringBuffer document = new StringBuffer();
        try{
        URL url = new URL("http://blog.chinaunix.net/top/?type="+selectIndex);
        URLConnection conn = url.openConnection();
        BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
        String line = null;
        String result=null;
        while ((line = reader.readLine()) != null)
        document.append(line+"|");
        result = document.toString().replaceAll("<[^>]*>","").replaceAll("\\s+","");
        result = result.substring(result.indexOf("推荐数")+6, result.indexOf("关于我们"));

        String array[] = result.split("\\|");
        String str="";
        for(int i=0;i<array.length;i++){
            if(!array[i].equals("")){
                str+=array[i]+"|";
            }

        }
         JSONArray blogListArray = new JSONArray();
         JSONObject blogObj = new JSONObject();
        String newBlogArray[] = str.split("\\|");
//here is all the item independently

        for(int i=0;i<showBlogNo;i++){
//The head 20 items

            blogObj.put("no", newBlogArray[8*i]);
            blogObj.put("blog", newBlogArray[8*i+1]);
            blogObj.put("user", newBlogArray[8*i+2]);
            blogObj.put("technique", newBlogArray[8*i+3]);
            blogObj.put("total", newBlogArray[8*i+4]);
            blogObj.put("visit", newBlogArray[8*i+5]);
            blogObj.put("common", newBlogArray[8*i+6]);
            blogObj.put("recommand", newBlogArray[8*i+7]);
            blogListArray.add(blogObj);
        }

      blogList = blogListArray.toString();
     reader.close();
    }catch(MalformedURLException e){
        e.printStackTrace();
    }catch(IOException ex){
        ex.printStackTrace();
    }
    System.out.println(blogList);
    return blogList;
    }

}

前后台之间需要的remote-config.xml配置。增加以下语句:

<destination id="getBlogList">
     <properties>
         <source>cublog.PaiHangBang</source>
       </properties>
 </destination>

Eclipse工程文件下载(包含源码)http://download.csdn.net/source/561370

weixin073智慧旅游平台开发微信小程序+ssm后端毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
python017基于Python贫困生资助管理系统带vue前后端分离毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值