团购导航实现(二)

用了差不多12个小时,完成了团购的采集优化工作,并且将mongodb用来承产品数据,将数据抓取进行了一定的优化,主要是:

  1. 将采集和页面分析分离,在后期可以分成两条线同时进行

  2. 将抓取到的页面存放在同一个文件夹中,分析器分析完成后删除

  3. 分析器增加测试方法,用于测试分析规则的可用性

  4. 优化分析器的执行方法,将文件扫描等几种在base中,子类只负责提供分析规则

  5. 去除一开始设计的product对象,产品数据使用dict保存,save方法从product对象移动到base中

对编码过程中的一些问题总结一下:

  1. pymongo不可以直接储存object,本来的想法是将对象实例直接储存,这样取出来后可以直接反序列化比较方便,可无法这样做,只能以dict的形式进行了存储。这个有待资料查询!

  2. mongodb中int型必须是8-byte

  3. 针对标题的分词,找了半天发现有mmseg等,可惜开发环境是windows,也希望项目可以运行在多个操作系统上,所以排除了pymmseg-cpp(只能运行在linux);最后自己实现了一个二元分词,虽然数据量大了一些,但是现阶段来看足够使用了。以后可能考虑使用shell直接调用mmseg进行分词。

  4. 网页解析的时候现在是使用BeautifulSoup,但是这样的话,针对每个网站需要修改源代码才能加入匹配规则,不够灵活,目标是通过WEB添加规则,这个地方还需要斟酌一下

  5. 熟悉了对象反射机制,接触到setattrs方法,用来给对象的属性赋值

经过测试后,数据抓取服务运行正常,下一步工作计划:前端数据展示、功能细节优化

Published: April 27 2011

blog comments powered by Disqus