HTR项目策划

HTR项目策划

释题:HTR=HTML to RSS(or Web Service)

关键词:Web挖掘、聚合、模式学习、开发接口

立项初衷:

随着生活学习节奏的加快,以及通过互联网获取信息的全面普及,用户以下需求越来越迫切:
无冗余地获取关注的信息;
最及时地获取关注的信息;
让计算机理解自己关注什么样的信息;
让计算机模仿自己的操作从互联网上获得它们。
对于高级用户,他还可能有如下需求:
希望互联网成为计算机的一部分,每个网站都有编程接口,并且有统一的标准;
便捷的开发、运行环境;
阅读信息不依赖客户端环境。

基于以上需求,我们曾经在进入学生清华门户网站(sps架构),在后台建立过RSS订阅服务。
原本打算到info等校园网站后台,继续推出一整套RSS订阅,但是考虑到:
1、info后台是jsp+oracal环境,与.NET+SQLSERVER不好内部协调
2、计算中心工作很繁重,不见得对我们的项目有兴趣
3、通过前台Web的HTML,同样可以获得信息源,不一定要直接得到数据库的数据源
4、info等校园网的链接比较固定,适合做长期的Web内容挖掘的目标

内容:

因此,我们决定使用Web挖掘的手段,向广大同学提供info等网站的更新内容列表的RSS源,进一步地,将陆续推出以下服务:
1、使用与“info教务公告”类似的模式,提供更广泛的信息订阅:包括图书馆新书通告、我们的家园自习室信息、邮条查看、清华新闻网新闻、水木十大、清华特快等等。
2、异质文本访问,在聚合中允许预览pdf,doc等含有文本信息的内容
3、有效递归,遍历被Web分页呈现的数据
4、服务器缓存策略与技术,制定搜索服务
5、设计、实现模式学习,可以教给计算机如何发现数据,让用户自定义扩展、发布自己的服务
6、制定一套合理的开放API,为二次开发提供最大的方便,发布SDK,示范性的提供一个客户端
7、开发用来发现并呈现所有服务的网站前端(使用Ajax技术以实现卓越的客户端体验)


目前进展:
建立C#.NET的Web服务解决方案,实现:
服务器端读取info教务公告的Web页面的HTML文本流,
对web页面的HTML文本流进行截断,取有效信息段,
对有效信息段做正则表达式的模式匹配,取得消息的标题和链接,
对每条链接,再次读取Web页面的HTML文本流,
对每条消息的HTML文本流做截断,
对截断后的消息HTML正文做正则表达式的替换,删除HTML标记,保留自然语言的文本。
将消息集结构化为XML文档,以RSS2.0的规范作为Web服务的一个方法返回值输出到前端(soap/httpget/httppost皆可)

将解析info教务公告的数据和逻辑从程序中分离出来,存在cfg.xml文件中,可以方便的扩展和维护。
 <site id="1" name="info">
  <link url="http://oars.tsinghua.edu.cn/zzh/30630.nsf/post?openview" par="count=10" encoding="GB2312"
   aut="false" base="http://oars.tsinghua.edu.cn" />
  <cnt>
   <bl>
   <![CDATA[<FORM><TABLE cellSpacing="0" cellPadding="0" width="100%" align="center" border="0" bgcolor="\"#F0F0FF\">]]>
   </bl>
   <br>
   <![CDATA[</TABLE></FORM>]]>
   </br>
   <regex match="title;link;">
   <![CDATA[href\s*=\s*(?:"(?<1>[^"]*)"|(?<1>\S+))\s+\S+\s+title\s*=\s*(?:"(?<2>[^"]*)"|(?<2>\S+))]]>
   </regex>
  </cnt>
  <deep>
  <bl><![CDATA[<FONT SIZE=4 COLOR="0000ff" FACE="宋体">]]></bl>
  <br><![CDATA[<TABLE align=center height=18 border=0 cellPadding=7 cellSpacing=0 width="100%" bgcolor="#CCD3E8">]]></br>
  <regex><![CDATA[(<[a-z]+[^>]*>)|(</[a-z]+>)]]></regex>
  
  </deep>
 </site>
其中:
site@name是挖掘的目标站点名称,也是WebMethod的参数
/link@url是Web信息源,即url地址
/link@par是url参数,服务器端捕获数据来自以下url
url+"&"+par
/link@encoding指定目标Web页面使用的编码(如GB2312)
/cnt/bl和/cnt/br是截断消息的前后匹配字符串
/cnt/regex是模式匹配的正则表达式——得到消息的标题和链接
/deep给出了分析消息正文的规则

最终输出RSS
http://166.111.17.85/Service1.asmx/getPage?siteName=info

以下方面亟待完善:
清除消息正文的不友好字符,如&nbsp;(表示空格)
消息时间的捕获
多版本——rss1.0,atom3
文本格式,换行的问题

转载于:https://www.cnblogs.com/civ3/archive/2005/10/23/260351.html

猜你喜欢

转载自blog.csdn.net/weixin_34292959/article/details/93571521