存档

文章标签 ‘网络爬虫’

网络爬虫中的那些多线程设计模式

2012年8月12日 1 条评论

---

前天跟师兄讨论问题,提到多线程,这些天做简历,也在回顾项目,忽然想到曾经写过网络爬虫中所用到的多线程,当时就顾写了,没有好好总结,只记得细节很多,学到的东西不少,今天就爬虫中涉及到的多线程设计模式做个小整理,重点加深读写锁模式的理解。内容如下:

===问题细节说明

===网页抓取:生产者消费者模式(多v多)

===URL去重:读写锁模式

===网页写入文件:生产者消费者模式(多v一)

===关于多线程的几点注意

=========================================

问题细节说明

1)简述一下这里涉及到的三个过程:a)爬虫从待爬取URL队列中取得URL进行抓取,抓取来的网页进行解析提取新的链接加入到待爬取URL队列;b)爬取每个网页之前,程序会到已爬取URL表中查询该URL是否已经爬取过;c)网页爬取完,网页解析的内容要写入文件

上述三个过程都是在多线程的环境下进行处理,涉及到的共享资源有:URL任务队列、已爬取的URL表,存储网页内容的文件。这些共享资源的读与写都需要处理好线程的同步互斥,以保证线程安全。

2)注:爬虫中多线程的管理实际是需要维护一个线程池;URL去重也是使用MD5结合布隆过滤器进行实现的;上述所述三个过程在爬虫中并不是独立的,而是互相结合工作的,但是为了提取模式特点,我们将其分拆开,在讲述一个模式过程中如果涉及到其他模式,便略去不谈。所以,这里仅仅提取爬虫中的多线程设计模式,举例重在了解模式工作原理,不涉及爬虫具体实现的过多细节。

阅读全文...

基于Nutch的站内搜索引擎搭建(二)

2012年8月9日 没有评论

---

Windows下Nutch的安装配置,参见:基于Nutch的站内搜索引擎搭建(一)

本节在上回基础上,对Nutch添加中文分词插件,进行二次开发,同时辅助Nutch分析工具了解Nutch的工作机制,并对其进行一些简单的优化配置。内容如下:

===部件及安装===

===Nutch添加中文分词插件===

===重新爬取建立索引发布===

===参考资料===

===========================================

部件及安装

Javacc:一个Java语法分析器,可以读取上下文无关且有着特殊意义的语法并把它转换成可以识别且匹配该语法的JAVA程序,这里主要用于将Nutch添加中文分词后进行重新编译生成Nutch的分词程序。附上快盘下载链接:Javacc下载

安装Javacc,解压缩包后,将Javacc的bin路径添加到环境变量Path中,然后可cmd测试命令Javacc验证。

IK Analyzer:开源分词软件,下载地址:http://code.google.com/p/ik-analyzer/

Luke:访问Lucene索引的开发分析工具,可以显示并修改Lucene索引内容,下载地址:http://www.getopt.org/luke/

阅读全文...

基于Nutch的站内搜索引擎搭建

2012年8月8日 2 条评论

---

以前配置过一次Nutch,后来干脆忘干净了,最近又折腾一次,记录下来,方便以后查阅。现在Nutch的版本已经出到1.51了(截止到7月份),新版资料少,入门还是找经典的版本混个眼熟先,本文采用0.9版,在Windows下搭建一个简单的站内搜索引擎,内容如下:

===所需装备===

===基本部件安装(从简述)===

===Nutch的安装与配置===

===Nutch部署到Eclipse===

===爬取网页:Nutch和Eclipse进行站内抓取===

===实现站内搜索:Nutch部署到Tomcat===

===参考资料===

===========================================

===所需装备

JDK1.6 不多说,大多数人都装有

Eclipse 不多说

Tomcat 开源web应用服务器,下载地址:http://tomcat.apache.org/

Nutch 0.9 下载地址:http://nutch.apache.org/  我安装时,官方没找到这个版本,这里提供一个快盘下载链接:Nutch-0.9

Cygwin 用来模拟运行UNIX类环境的,因Nutch是在Linux下开发的,故Windows环境下需要用Cygwin协助。下载地址:http://www.cygwin.com/ (本文没有在Cygwin环境下,大部分命令是通过Eclipse完成)

阅读全文...