zoukankan      html  css  js  c++  java
  • 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 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

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

  • 相关阅读:
    Part 17 Consuming ASP NET Web Service in AngularJS using $http
    Part 16 ng include directive in AngularJS
    Part 15 AngularJS ng init directive
    文本框
    mint上部署lamp环境
    18种有效有趣的读书方法(转载)
    可扩展的架构设计
    iisreset和w3wp的关系
    Ajax请求中带有IPv6地址后的百分号的问题
    IE中JavaScript 的异常处理
  • 原文地址:https://www.cnblogs.com/chenying99/p/3123152.html
Copyright © 2011-2022 走看看