[关闭]
@ronaldoooo 2014-08-19T07:14:19.000000Z 字数 2478 阅读 1733

荆楚网移动站设计


前置文档

移动站方案设计

类划分

数据结构

Page

  1. class Page{
  2. $source;//页面的源地址
  3. $content;//页面读取后的内容
  4. $results;//页面执行抓取后的结果,应该是一个字典型数组(关联数组)
  5. private $pageReader;
  6. private $pageParser;
  7. //读页面,根据$source读取页面,将页面内容缓存在$content中
  8. function in(){...}
  9. //抓取方法,调用$pageReader->catch()
  10. function catch(){
  11. $pageReader->catch($this);
  12. }
  13. //转化方法,调用$pageParser->parse()
  14. function parse(){
  15. $pageParser($this);
  16. }
  17. //存储方法,会采用PathCalculator计算存储位置,写入时会调用模板生成静态HTML
  18. function out(){
  19. $pc = PathCalculator::calculate($source);
  20. }
  21. }

抓取模块

模块说明

抓取模块负责页面的抓取。

PageReader

  1. class PageReader{
  2. //抓取器
  3. //每一个抓取器包含一个抓取元列表。
  4. //会为每个页面升恒一个抓取器
  5. $catchers;//抓取元的列表,是一个array。在执行抓取时,依次从列表中取出抓取元。一个抓取元对应一条抓取规则。
  6. //依照catchers抓取页面
  7. function catch($page){
  8. foreach($catchers as $catcher){
  9. $catcher->catch($page->content);
  10. $page->results[$catcher->key] = $catcher->value;
  11. }
  12. }
  13. //工具成员方法:
  14. function addCatcher(Catcher $c){...}//增加一个抓取器
  15. function removeCatcher(Catcher $c){...}//移除一个抓取器
  16. //getter and setter...
  17. }

Catcher

  1. class Catcher{
  2. //抓取元
  3. //每一个抓取元对应一个小的抓取规则,如:抓取title,content等。
  4. $key;//抓取的键值
  5. $regex;//键值需要匹配的正则表达式
  6. $value;//抓取出的结果
  7. //匹配正则表达式,依照$key的值将结果存放在$value中
  8. function catch($content){...}
  9. }

转化模块

模块说明

负责内容的转化,工作包含两项:

原本的设计中,转换模块只负责页面的转换,而存放工作由存放模块来完成。但是考虑到存放并不需要很好的拓展性,且功能较为单一,故由数据类Page自身来完成存放的逻辑。

PageParser

  1. class PageParser{
  2. //转换器
  3. //转换器和抓取器类似,它包含一个转换规则的列表,转换规则可以动态的添加。
  4. //会为每个页面生成一个转换器
  5. $filters;//过滤元的列表。在执行过滤时,依照列表中地每一项进行过滤。
  6. //遍历页面中抓取出的所有元素,逐一进行过滤。
  7. function filter($page){
  8. while(list($key, $value) = each($page->results)){
  9. $page->results[$key] = filterText($value);
  10. }
  11. }
  12. //工具方法,对单一的内容进行过滤。会逐一调用所有的过滤元。
  13. function filterText($value){
  14. foreach($filters as $filter){
  15. $value = $filter->filter($value);
  16. }
  17. return $value;
  18. }
  19. }

Filter

  1. class Filter{
  2. //过滤元
  3. //根据传入的字串,依照自身的规则和字串内容来doSomething
  4. function filter($text){
  5. //.....anything you want to do
  6. //转换图片,转换URL代码都在此完成。推荐继承此类,实现不同的filter,加入到PageParser的filters列表中。
  7. }
  8. }

通用模块

模块说明

一些通用的方法,该模块中的类作为工具被其它类调用。

Toolbox

路径计算器,工具类。

  1. class Toolbox{
  2. //工具类
  3. //所有的通用方法都放置在该类中,以静态形式存在
  4. public static function calculate($url){
  5. //....some logic here
  6. return $directory;
  7. }
  8. ......
  9. }

模板(显示层)

模板负责将数据呈现出来。

模板的生成逻辑在Page类中的out方法中完成。

基础页

该页面是整个模板框架的基础页面,所有的页面都从此页面继承。

页面元素:

首页

首页是用户在手机端输入cnhubei.com后跳转到的页面。

页面元素:

目录页

目录页是当点击了某一个频道后,会在页面中显示该频道下的文章列表。

页面元素:

文章页

文章页是用户在点击一篇文章的标题后出现的页面,主要用于显示文章内容。

内容包含标题、编辑、作者等一系列采集到的,并经过处理的信息。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注