`

Java实现的基于模板的网页结构化信息精准抽取组件:HtmlExtractor

阅读更多

HtmlExtractor是一个Java实现的基于模板的网页结构化信息精准抽取组件,本身并不包含爬虫功能,但可被爬虫或其他程序调用以便更精准地对网页结构化信息进行抽取。

 

HtmlExtractor是为大规模分布式环境设计的,采用主从架构,主节点负责维护抽取规则,从节点向主节点请求抽取规则,当抽取规则发生变化,主节点主动通知从节点,从而能实现抽取规则变化之后的实时动态生效。

如何使用?

HtmlExtractor由2个子项目构成,html-extractor和html-extractor-web。
html-extractor实现了数据抽取逻辑,是从节点,html-extractor-web提供web界面来维护抽取规则,是主节点。
html-extractor是一个jar包,可通过maven引用:
<dependency>
    <groupId>org.apdplat</groupId>
    <artifactId>html-extractor</artifactId>
    <version>1.0</version>
</dependency>
  html-extractor-web是一个war包,需要部署到Servlet/Jsp容器上。 

单机集中式使用方法:

//1、构造抽取规则

List<UrlPattern> urlPatterns = new ArrayList<>();
//1.1、构造URL模式
UrlPattern urlPattern = new UrlPattern();
urlPattern.setUrlPattern("http://money.163.com/\\d{2}/\\d{4}/\\d{2}/[0-9A-Z]{16}.html");
//1.2、构造HTML模板
HtmlTemplate htmlTemplate = new HtmlTemplate();
htmlTemplate.setTemplateName("网易财经频道");
htmlTemplate.setTableName("finance");
//1.3、将URL模式和HTML模板建立关联
urlPattern.addHtmlTemplate(htmlTemplate);
//1.4、构造CSS路径
CssPath cssPath = new CssPath();
cssPath.setCssPath("h1");
cssPath.setFieldName("title");
cssPath.setFieldDescription("标题");
//1.5、将CSS路径和模板建立关联
htmlTemplate.addCssPath(cssPath);
//1.6、构造CSS路径
cssPath = new CssPath();
cssPath.setCssPath("div#endText");
cssPath.setFieldName("content");
cssPath.setFieldDescription("正文");
//1.7、将CSS路径和模板建立关联
htmlTemplate.addCssPath(cssPath);
//可象上面那样构造多个URLURL模式
urlPatterns.add(urlPattern);

//2、获取抽取规则对象
ExtractRegular extractRegular = ExtractRegular.getInstance(urlPatterns);
//注意:可通过如下3个方法动态地改变抽取规则
//extractRegular.addUrlPatterns(urlPatterns);
//extractRegular.addUrlPattern(urlPattern);
//extractRegular.removeUrlPattern(urlPattern.getUrlPattern());

//3、获取HTML抽取工具
HtmlExtractor htmlExtractor = HtmlExtractor.getInstance(extractRegular);

//4、抽取网页
String url = "http://money.163.com/08/1219/16/4THR2TMP002533QK.html";
List<ExtractResult> extractResults = htmlExtractor.extract(url, "gb2312");

//5、输出结果
int i = 1;
for (ExtractResult extractResult : extractResults) {
    System.out.println((i++) + "、网页 " + extractResult.getUrl() + " 的抽取结果");
    for(ExtractResultItem extractResultItem : extractResult.getExtractResultItems()){
        System.out.print("\t"+extractResultItem.getField()+" = "+extractResultItem.getValue());              
    }
    System.out.println("\tdescription = "+extractResult.getDescription());
    System.out.println("\tkeywords = "+extractResult.getKeywords());
}
 

多机分布式使用方法:

1、运行主节点,负责维护抽取规则:
  将子项目html-extractor-web打成War包然后部署到Tomcat。
2、获取一个HtmlExtractor的实例(从节点),示例代码如下:
String allExtractRegularUrl = "http://localhost:8080/HtmlExtractorServer/api/all_extract_regular.jsp";
String redisHost = "localhost";
int redisPort = 6379;
HtmlExtractor htmlExtractor = HtmlExtractor.getInstance(allExtractRegularUrl, redisHost, redisPort);
3、抽取信息,示例代码如下:
String url = "http://money.163.com/08/1219/16/4THR2TMP002533QK.html";
List<ExtractResult> extractResults = htmlExtractor.extract(url, "gb2312");

int i = 1;
for (ExtractResult extractResult : extractResults) {
    System.out.println((i++) + "、网页 " + extractResult.getUrl() + " 的抽取结果");
    for(ExtractResultItem extractResultItem : extractResult.getExtractResultItems()){
        System.out.print("\t"+extractResultItem.getField()+" = "+extractResultItem.getValue());              
    }
    System.out.println("\tdescription = "+extractResult.getDescription());
    System.out.println("\tkeywords = "+extractResult.getKeywords());
}
 
2
0
分享到:
评论
2 楼 bewithme 2014-08-29  
应用场景呢??
1 楼 jiandong2008 2014-08-29  
1、对于js异步渲染的数据 能支持吗?
2、flex的东西能抓取吗?

相关推荐

    基于模板的Java网页结构化信息精准抽取组件HtmlExtractor设计源码

    HtmlExtractor是一个采用Java语言编写的通用网页结构化信息精准抽取组件,集成了69个文件,涵盖31个Java源代码文件、23个文本文件、7个XML文件、3个Git忽略文件、1个YAML文件、1个Markdown文件、1个JSP文件、1个...

    基于Java实现的基于模板的网页结构化信息精准抽取组件。.zip

    本项目是一个基于Java实现的基于模板的网页结构化信息抽取组件,其核心目标是提高信息提取的准确性与效率。 首先,我们来详细探讨“基于模板”的网页信息抽取。模板是一种预先定义好的规则或模式,它包含了我们需要...

    HtmlExtractor-master_HtmlExtractor_never11l_java_爬虫_基于模板_

    HtmlExtractor是一个Java实现的基于模板的网页结构化信息精准抽取组件,本身并不包含爬虫功能,但可被爬虫或其他程序调用以便更精准地对网页结构化信息进行抽取。HtmlExtractor是为大规模分布式环境设计的,采用主从...

    基于语义结构的信息抽取系统的研究与实现

    本文设计并实现了基于网站语义结构的信息抽取系统,该系统主要包括三个核心组件:网站网页搜索器、网站语义结构生成器以及网页信息抽取器。具体来说: 1. **网站网页搜索器**:负责对目标网站进行深度搜索,获取...

    4-8+面向非结构化文本的信息抽取:从封闭到开放.zip

    在本资料"4-8+面向非结构化文本的信息抽取:从封闭到开放"中,我们将会深入探讨这一主题,从封闭环境的信息抽取逐步扩展到开放领域的应用。 封闭环境的信息抽取通常针对预定义的实体和关系类型进行,例如从新闻报道...

    基于统计的网页正文信息抽取

    "基于统计的网页正文信息抽取"是一种利用统计学方法来识别和提取网页主要内容的技术。本文将深入探讨这一主题,并结合给定的描述和标签进行详细的讲解。 首先,我们需要理解“网页正文抽取”的概念。网页正文通常指...

    网页信息抽取工具 java网页信息抽取工具 java

    网页信息抽取工具 java网页信息抽取工具 java网页信息抽取工具 java网页信息抽取工具 java网页信息抽取工具 java网页信息抽取工具 java网页信息抽取工具

    基于统计的网页正文信息抽取方法

    ### 基于统计的网页正文信息抽取方法 #### 概述 随着互联网技术的快速发展,海量的在线信息成为自然语言处理(NLP)技术应用的重要领域之一。然而,网页通常由HTML标记语言构建而成,这给直接应用NLP技术带来了...

    基于Web的信息抽取技术现状与发展

    Web信息抽取技术作为一种有效的手段,旨在从网页中精准地提取所需数据,并将其转化为结构化或半结构化的格式,如XML、关系数据库或面向对象的数据,从而实现信息的有效管理和高效检索。 #### Web信息抽取技术概述 ...

    电信设备-一种采用模板方式抽取结构化信息的方法.zip

    模板方式是结构化信息抽取的一种常见方法,主要基于预先定义好的模板模型来识别和提取所需信息。在电信设备管理中,这些模板可能包括设备型号、序列号、安装日期、性能指标等关键字段。模板的设计通常依据业务需求和...

    基于WEB的快速信息抽取技术的研究和实现

    ### 基于WEB的快速信息抽取技术的研究和实现 #### 摘要与背景介绍 随着互联网技术的快速发展,网络已经成为人们获取信息的主要渠道之一。然而,互联网上的信息庞大而繁杂,如何从海量信息中高效、准确地提取出有...

    基于XML 的网页信息抽取.pdf

    - **挑战与机遇**:虽然基于XML的信息抽取技术已经取得了一定的进展,但仍面临着网页结构变化频繁、网页内容多样化等挑战。未来的研究方向可能包括更高级的机器学习算法的应用、更强大的自然语言处理技术结合等,以...

    电信设备-一种采用模板方式抽取结构化信息的系统.zip

    本文将深入探讨“电信设备-一种采用模板方式抽取结构化信息的系统”这一主题,该系统可能被设计用于从电信设备相关的非结构化数据中提取有价值的信息,以便进行数据分析、决策支持和业务优化。 首先,让我们理解...

    电信设备-一种网页库级的结构化信息抽取方法.zip

    《电信设备-一种网页库级的结构...通过对这种网页库级的结构化信息抽取方法的深入理解和实践,电信设备行业的专业人士可以更好地驾驭海量数据,实现从信息海洋中快速获取有价值的知识,助力企业的战略决策和技术创新。

    包括信息模块的抽取组件.zip

    信息模块抽取组件,通常是指用于自动化地从文本、网页、邮件等源中识别关键信息的软件工具。这些组件能够帮助用户快速定位到所需信息,减少手动筛选的工作量,提高工作效率。例如,在商业智能中,它可以帮助企业从...

    电信设备-一种基于网页聚类的Web信息自动抽取方法.zip

    6. **应用价值**:基于网页聚类的Web信息抽取方法在电信设备领域可实现自动化数据收集,减少人工工作量,同时提升信息的准确性和时效性,有助于企业决策支持、市场趋势分析、竞品研究等业务。 7. **未来发展趋势**...

Global site tag (gtag.js) - Google Analytics