WEB数据挖掘(五)——Aperture数据抽取(1)


网上了解到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 cohttps://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

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

优质内容筛选与推荐>>
1、KNN算法
2、Hibernate之Query.uniqueResult()结果为数值的注意事项
3、U盘装系统相关术语介绍【装机吧】
4、Spring Cloud构建微服务架构(一)服务注册与发现
5、matlab编写函数方法


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号





    联系我们

    欢迎来到TinyMind。

    关于TinyMind的内容或商务合作、网站建议,举报不良信息等均可联系我们。

    TinyMind客服邮箱:support@tinymind.net.cn