Nutch2在eclipse中的配置和测试


1.安装Eclipse插件

SubclipseIvyDE 和 m2e 插件
在Eclipse的 Help > Install New Software … 中进行安装,安装地址分别是:

2.获得项目源码

Nutch2中使用了Gora项目所以获得Nutch2源码的同时也需要获得Gora项目源码.
通过svn工具, 获得 Nutch 和 Gora 的源码
http://svn.apache.org/repos/asf/nutch/trunk
http://svn.apache.org/repos/asf/incubator/gora/trunk
截图如下:

3.Build 项目

打开Eclipse的Ant视图:Window > Show View > Ant

拖拽这两个项目的build.xml到Ant视图里,双击Ant视图中的Gora和Nutch对象. 双击Gora后将会发布Ivy modules 到Ivy本地资源库. 双击Nutch后将会在runtime/local文件夹下建立项目的发布文件列表.

4.加入Ivy库文件到lib

右键 ivy/ivy.xml, 选择”Add Ivy Library …”. 对src/plugin/protocol-sftp/ivy.xml也进行同样操作.

5. 设置Source Folder

项目树截图如下:

6. 配置数据库

数据库中存放Nutch抓取的信息. 你可以选择关系数据库也可以选择其它类型数据库. 这时就要感谢Gora接口为我们提供的强大的后台支持了.

我选择使用MySql

使用MySQL作为Nutch的数据存储, 需要添加一个依赖到 ivy/ivy.xml:
<dependency org=”mysql” name=”mysql-connector-java” rev=”5.1.16″ conf=”*->default”></dependency>

修改 conf/gora.properties 中的 MySQL 链接:

gora.sqlstore.jdbc.driver=com.mysql.jdbc.Driver
gora.sqlstore.jdbc.url=jdbc:mysql://localhost:3306/nutch2?createDatabaseIfNotExist=true
gora.sqlstore.jdbc.user=hhdem
gora.sqlstore.jdbc.password=pwd

7. JUnit 测试

数据库src/test/org/apache/nutch/storage/TestGoraStorage.java 运行JUnit Test.

这里需要确保你的数据库不是使用的utf-8编码格式, utf-8编码会导致报错, 解决方法可看:http://naozao.com/topic/view/121.html

抓取org.apache.nutch.crawl.Crawler

Usage: Crawl (<seedDir> | -continue) [-solr <solrURL>] [-threads n] [-depth i] [-topN N]

建立seeds/urls.txt文件, 内容填入:

http://www.hhdem.com/

http://www.naozao.com/

建立Java Application, 配置如下:


Nutch 1.2 在Eclipse中的配置 (2)

Nutch + Resin 在Eclipse的配置

经过Nutch 1.2 在Eclipse中的配置 (1),之后就需要看看搜索效果了

1. 需安装Eclipse中的resin插件,更新地址:http://caucho.com/eclipse/

2. 配置resin.conf到Nutch的根目录,修改相应的<http>和<host>标签为如下:

<!-- The http port -->
<http server-id="" host="*" port="3331"/>

...

<host id="" root-directory=".">
    <resin:set var="resin_admin_password"  default=""/>
    <resin:set var="resin_admin_localhost" default="true"/>
    <web-app id="/nutch" document-directory="E:\Projects\Nutch\apache-nutch-1.2\web"/>
</host>

这里使用的为resin3

3.启动resin,可以通过 http://localhost:3331/nutch访问

Nutch 1.2 在Eclipse中的配置 (1)

Nutch Crawl 在Eclipse的配置

下载Nutch : http://www.apache.org/dyn/closer.cgi/nutch/ 当前最新版本为1.2

通过新建Java Project 将Nutch导入进Eclipse中

将conf文件夹引用为source folder

在nutch项目的根目录建立urls文件夹, 并新建文件url.txt, 内容如下:

http://www.yahoo.com.cn/

http://www.163.com/

修改conf/crawl-urlfilter.txt内容:

# accept hosts in MY.DOMAIN.NAME

+^http://([a-z0-9]*\.)*MY.DOMAIN.NAME/

修改为

+^http://([a-z0-9]*\.)*com.cn/

+^http://([a-z0-9]*\.)*cn/

+^http://([a-z0-9]*\.)*com/

修改conf/nutch-site.xml文件内容:

<configuration>

<property>

<name>http.agent.name</name>

<value>*</value>

</property>

</configuration>

修改conf/nutch-defaul.xml文件, 将属性”plugin.folders”的值由“plugins”更改为 “./src/plugin”

Eclipse中选择Run as… , 配置一个新的Java Application

Main选项卡中的Main class选择org.apache.nutch.crawl.Crawl

Arguments选项卡中:

Program arguments 填入urls -dir crawl -depth 3 -topN 50,

VM arguments填入 -Dhadoop.log.dir=logs -Dhadoop.log.file=hadoop.log -Xms64m -Xmx512m

最后点击Run就可以开始Crawl了

也可以将Paoding中文分词插件加入Nutch中

通过触发appear, 在LazyLoader中载入未加载的图片

如果网页是以tab方式切换显示的, 并且切换的内容也是隐藏方式加载的, 那么如果使用了LazyLoader的话, 页面第一次加载时并不会加载隐藏内容中的图片, 在通过动态方式显示隐藏内容时, 图片会是未加载的效果, 这样比较影响用户体验.

看源码, LazyLoader中通过获得appear的事件加载图片的, 所以很简单的只要我们在显示隐藏内容的时候触发相应的appear事件就可以加载隐藏内容中的图片了.

代码如下:

jQuery("#divid img").trigger("appear");
同样发布在: 通过触发appear, 在LazyLoader中载入未加载的图片

在Photoshop中设计网页的Repeat背景图

  1. 新建一个图层, 如:400×400
  2. 在图层中设置底色, 画入你想要的图形, 注意这一步请尽量将图形集中在中间
  3. 使用Filter(滤镜) -> Other(其它) -> Offset(位移)命令, 设置你想要的位移量, 根据你要产生的最终效果决定
  4. 位移完, 可以在不修改4边的情况下, 修改你想要的效果
  5. 你也可以多次位移多次修改达到你想要的复杂的重复效果
  6. 保存图片
  7. 建立htm页面, 代码如下:
<HTML>
<HEAD>
<TITLE>Repeat背景图</TITLE>
</HEAD>
<style>
body {
background-color: white;
background-image: url("图片路径");
}
</style>
<BODY>

</BODY>
</HTML>

例图如下:

第 3 / 9 页123456789