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

标签: java 模板 网页 | 发表时间:2014-08-28 23:38 | 作者:
出处:http://www.iteye.com

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());
}
     


已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [java 模板 网页] 推荐:

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

- - ITeye博客
HtmlExtractor是一个Java实现的基于模板的网页结构化信息精准抽取组件,本身并不包含爬虫功能,但可被爬虫或其他程序调用以便更精准地对网页结构化信息进行抽取. HtmlExtractor是为大规模分布式环境设计的,采用主从架构,主节点负责维护抽取规则,从节点向主节点请求抽取规则,当抽取规则发生变化,主节点主动通知从节点,从而能实现抽取规则变化之后的实时动态生效.

Java回调与模板方法模式

- - ITeye博客
一.Java回调与模板方法模式 . 模板方法模式很常用,其目的是在一个方法中定义一个算法骨架,而将一些步骤延迟到子类中. 模板方法使得子类可以在不改变算法结构的情况下,重新定义算法的某些步骤. 在标准的模板方法模式实现中,主要是使用继承的方式,来让父类在运行期间可以调用到子类的方法. 其实在Java开发中,还有另外一个方法可以实现同样的功能,那就是Java回调技术,通过回调在接口中定义的方法,调用到具体的实现类中的 方法,其本质是利用Java的动态绑定技术,在这种实现中,可以不把实现类写成单独的类,而使用内部类或匿名内部类来实现回调方法.

Java iText使用PDF模板生成PDF文档

- - CSDN博客综合推荐文章
我们系统需要生成一个可以打印的PDF文档,老板给了我一个Word文档,按照这个Word文档的格式生成PDF文档. 第一步:下载AdobeAcrobat DC,必须使用这个来制作from域. 第二步:使用AdobeAcrobat DC将Word导成PDF文档. 第三步:由于还要加水印的效果,所以还是使用AdobeAcrobat DC来添加水印,非常方便;.

psd网页模板怎么用?

- - 行业应用 - ITeye博客
一、怎么把psd网页模板弄到DW里进行修改. 在ps中可以用切片工具,把想放文字的地方切成一块一块的(背景最好是白色的部分). 符合自己需要后,点菜单上的》文件》存储为web所用格式. 存储的时候,选html格式. 用DW打开,切成块的图片删掉,添上文字就可以了. 如果有脚本,可以在刚删掉的地方写脚本,.

【网页设计】分享21款网页模板PSD

- Ashaum - 博客园-首页原创精华区
作者: 悠游人生 发表于 2011-08-17 17:02 原文链接. 评论: 2 查看评论 发表评论. · 诺基亚CEO:Android手机制造商要“小心”(2011-08-18 08:49). · 土豆上市首日开盘破发(2011-08-18 08:47). · 微软中国欠薪被罚24万赔偿金(2011-08-18 08:47).

httpclient 用java调用 的方式获取网页内容,

- - ITeye博客
1. 读取网页(HTTP/HTTPS)内容. 下面是我们给出的一个简单的例子用来访问某个页面. *最简单的HTTP客户端,用来演示通过GET或者POST方式访问某个页面.       // 设置代理服务器地址和端口     .       // 使用 GET 方法 ,如果服务器需要通过 HTTPS 连接,那只需要将下面 URL 中的 http 换成 https.

介绍几个java把网页报存为图片的框架

- - CSDN博客Web前端推荐文章
用java实现java截图倒不难,原理吗就是把当前屏幕存成一个图,然后获取鼠标拉去的想去位置然后把截取的图保存到panel里边,再生成图片即可:示例代码就不展示了,网上很多. 下边说几个将网页保存为图片的框架:. 我说这个就是原声的java代码进行封装的一个jar包. 效果非常差,代码就不贴了网上好多.

9个漂亮的 CSS 网页模板下载

- 英建 - 博客园-首页原创精华区
  当你需要在短时间内设计出一个网站的时候,网页模板就非常有用了. 在这篇文章中,收集了各式各样的网页模板,您可以免费下载使用,希望这些网页设计模板不仅带给您灵感,也让您回到创作轨迹. 演示:Portfolio Template 1 demo. 下载:Portfolio Template 1 download.

15个免费下载网页模板网站

- Yangan - 紫萝卜 | 所有与设计有关
一个优秀且免费的网页模板对设计者的意义不用多说,不但可以节约我们大量的时间提高我们的设计效率,更为我们省下一些模板费用,更进一步我们还可以通过这些网页模板源文件提高我们的设计水平. 下面与大家分享的是精选国外15个免费网页模板下载的集合网站. 25个免费网页模板PSD文件. 55款PSD网站模板免费下载.

9个免费的响应式网页设计模板

- - 优设(UISDC)
随着PC端、平板、智能手机等终端的发展,设备环境(系统平台、屏幕尺寸、屏幕分辨率等)更加复杂,网页展示需要考虑到各个终端的具体差异. 因此,响应式设计受到了大家的推崇. 通过文中的9个免费的响应式设计模板,希望能帮大家了解这种技术以及提高工作效率. 这个模板有一个主页页面以及一个博客页面. 可分为一列或两列,你可以根据自己的意愿进行设定.