君子博学而日参省乎己 则知明而行无过矣

博客园 首页 新随笔 联系 订阅 管理

网上了解到Aperture框架能够实现从文件系统中抽取数据,Aperture的介绍如下:

Aperture这个Java框架能够从各种各样的资料系统(如:文件系统、Web站点、IMAP和Outlook邮箱)或存在这些系统中的文件(如:文档、图片)爬取和搜索其中的全文本内容与元数据。它当前支持的文件格式如下: 

  • Plain text
  • HTML, XHTML
  • XML
  • PDF (Portable Document Format)
  • RTF (Rich Text Format)
  • Microsoft Office: Word, Excel, Powerpoint, Visio, Publisher
  • Microsoft Works
  • OpenOffice 1.x: Writer, Calc, Impress, Draw
  • StarOffice 6.x - 7.x+: Writer, Calc, Impress, Draw
  • OpenDocument (OpenOffice 2.x, StarOffice 8.x)
  • Corel WordPerfect, Quattro, Presentations
  • Emails (.eml files)

Aperture当前版本为1.6.0,它的wiki地址http://aperture.wiki.sourceforge.net/

svn地址 https://aperture.svn.sourceforge.net/svnroot/aperture/aperture/trunk/

a  首先安装svn sudo apt-get install subversion

b 在workspace目录建立aperture目录

c 进入当前目录 cd workspace/aperture/

d 运行命令 svn co https://aperture.svn.sourceforge.net/svnroot/aperture/aperture/trunk/

e 运行命令mvn eclipse:eclipse

f 打开eclipse,导入该项目

开发人员最关心的是怎么利用Aperture框架的API抽取文件的内容,下面本人采用maven管理的方式写一个demo

首先在eclipse中新建maven项目,在pom.xml文件加入Aperture相关依赖的jar文件,本人的配置如下

<repositories>
        <repository>
            <id>aperture-repo</id>
            <url>http://aperture.sourceforge.net/maven/</url>
            <name>Aperture Maven Repository</name>
        </repository>        
    </repositories>
    <dependencies>
        <dependency>
            <groupId>org.semanticdesktop.aperture</groupId>
            <artifactId>aperture-core</artifactId>
            <version>1.6.0</version>
        </dependency>
        <dependency>
            <groupId>org.semanticdesktop.aperture</groupId>
            <artifactId>aperture-runtime-optional</artifactId>
            <version>1.6.0</version>
            <type>pom</type>
        </dependency>
    </dependencies>

需要注意的是这里需要额外配置maven仓库地址,在maven的中央仓库不存在相关的依赖jar文件;另外如果上面仓库不能访问,还需要配置代理服务器(在${m2_home}/conf/settings.xml文件中配置)。此时我们就可以看到自动下载的依赖jar文件:

下面创建Crawler类,用于获取web的文本数据

public class Crawler {

    /**
     * @param args
     */
    public static void main(String[] args) throws Exception{
        // TODO Auto-generated method stub
        Crawler crawler=new Crawler();
        System.out.println(crawler.extract("http://news.sina.com.cn/s/2013-06-07/044127337162.shtml"));

    }
    public String extract(String url) throws Exception
    {
        DataObject dao =  new HttpAccessor().getDataObject(url, null, null,  new RDFContainerFactoryImpl());
        if (dao instanceof FileDataObject)
        {
            FileDataObject fdo = ((FileDataObject)dao);
            //return IOUtils.toString(fdo.getContent(), "utf-8");
            //Charset.forName("utf-8")
            new HtmlExtractor().extract(fdo.getID(), fdo.getContent(),  null, null, fdo.getMetadata());
            return fdo.getMetadata().getString(NIE.plainTextContent);
        } else {
            return null;
        }
    }

}

运行该class的main方法,即可以看到到输出当前url的文本内容

--------------------------------------------------------------------------- 

本系列WEB数据挖掘系本人原创

作者 博客园 刺猬的温驯 

本文链接 http://www.cnblogs.com/chenying99/archive/2013/06/07/3123152.html

本文版权归作者所有,未经作者同意,严禁转载及用作商业传播,否则将追究法律责任。

posted on 2013-06-07 08:50  刺猬的温驯  阅读(586)  评论(0编辑  收藏  举报