现在的位置: 首页 > 综合 > 正文

SEOLinker所用的几点技术总结

2012年12月15日 ⁄ 综合 ⁄ 共 791字 ⁄ 字号 评论关闭
SEOLinker,作为中国第一个锚文本搜索工具,目前为止,已经完成了80%。这个项目总体分为两大块儿(也不是两大模块儿):一个是采集蜘蛛(Spider),一个是搜索引擎(SearchEngine)。目前,Spider已经完成,虽然在实际的测试中遇到了一些问题,但是相信可以很快的解决。在这里,我将用到的技术进行一下总结。
在制作期间,遇到以下几个问题:
  1. 网页内容抓取(下载html源代码)
  2. 多线程网页抓取(同一时间进行10个网页的下载)
  3. 自定义抓取时的User-Agent
  4. 监视网站抓取状态(响应类型文件类型,响应状体,下载进度……)
  5. 解析网页字符串编码(UTF-8,GB2312……)
  6. 网页内容分析(提取出网页源代码中的标题,关键字,描述,链接)
  7. 解析抓取到的链接是站内链接还是站外链接
  8. 不间断工作线程(工作者,也就是一个while循环)
  9. 对不间断工作线程的控制(开始,暂停,终止)
  10. 监视工作者的状态
  11. 多线程并发IO操作(日志记录)
  12. 如何让数据库在容纳更多数据的同时,有一个很快的搜索速度。
  13. 工作者有三个,如何协调三个工作者之间的关系
  14. 什么样的设置可以在进行网址排重时更加高效
  15. 如何保证各个工作者的产品在突发事件(断电,程序异常退出)时不会丢失,并且保证查询速度
  16. 其他……

上面这些,是在设计时就存在的问题,除了这些,在进行开发时,还遇到了另外的问题

  1. 程序运行时,要进行大量的初始化操作(读取配置文件,尝试连接数据库,对比数据库架构并尝试修改,初始化进程池,初始化工作者……),如果这些东西全部都放在窗体的Load事件中,那么势必会造成UI线程阻塞,产生“应用程序未响应”的假象(事实证明,初始化工作最快需要5-10s)。
  2. 在程序运行时,有些操作时很耗时的,如果也放在UI线程的话,后果可想而知。
  3. 其他……

暂时能想到的东西也就这么多,如果想到别的了,再一一的补上。后面的文章,我会一一的将解决方案写出来。今天就到这里。。

抱歉!评论已关闭.