首先,我们新建一个maven工程,在pom.xml中加入HtmlExtractor依赖,如下所示:
<dependency> <groupId>org.apdplat</groupId> <artifactId>html-extractor</artifactId> <version>1.1</version> </dependency>
接着,我们加入日志配置文件,在src/main/resources目录下新建日志文件logback.xml,如果想看到更多细节,请将<root level="INFO">改为<root level="DEBUG">,内容如下:
<?xml version="1.0" encoding="UTF-8"?> <configuration> <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender"> <layout class="ch.qos.logback.classic.PatternLayout"> <Pattern>%m%n</Pattern> </layout> </appender> <appender name="logfile" class="ch.qos.logback.core.rolling.RollingFileAppender"> <File>logs/logback.log</File> <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"> <FileNamePattern>logs/logback_%i.log</FileNamePattern> <MinIndex>1</MinIndex> <MaxIndex>10000</MaxIndex> </rollingPolicy> <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> <MaxFileSize>5MB</MaxFileSize> </triggeringPolicy> <layout class="ch.qos.logback.classic.PatternLayout"> <Pattern>%m%n</Pattern>j </layout> </appender> <root level="INFO"> <appender-ref ref="logfile"/> <appender-ref ref="stdout"/> </root> </configuration>
接下来,我们在src/main/java下新建一个类,如NeteasyNewsExtractor.java,内容如下:
import java.util.ArrayList; import java.util.List; import java.util.Map; import org.apdplat.extractor.html.HtmlExtractor; import org.apdplat.extractor.html.HtmlFetcher; import org.apdplat.extractor.html.impl.DefaultHtmlExtractor; import org.apdplat.extractor.html.impl.ExtractRegular; import org.apdplat.extractor.html.impl.JSoupHtmlFetcher; import org.apdplat.extractor.html.model.CssPath; import org.apdplat.extractor.html.model.ExtractFailLog; import org.apdplat.extractor.html.model.ExtractResult; import org.apdplat.extractor.html.model.ExtractResultItem; import org.apdplat.extractor.html.model.HtmlTemplate; import org.apdplat.extractor.html.model.UrlPattern; /** * * @author 杨尚川 */ public class NeteasyNewsExtractor { public static void main(String[] args) { //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 = new DefaultHtmlExtractor(extractRegular); //4、抽取网页 String url = "http://money.163.com/08/1219/16/4THR2TMP002533QK.html"; HtmlFetcher htmlFetcher = new JSoupHtmlFetcher(); String html = htmlFetcher.fetch(url); List<ExtractResult> extractResults = htmlExtractor.extract(url, html); //5、输出结果 int i = 1; for (ExtractResult extractResult : extractResults) { System.out.println((i++) + "、网页 " + extractResult.getUrl() + " 的抽取结果"); if(!extractResult.isSuccess()){ System.out.println("抽取失败:"); for(ExtractFailLog extractFailLog : extractResult.getExtractFailLogs()){ System.out.println("\turl:"+extractFailLog.getUrl()); System.out.println("\turlPattern:"+extractFailLog.getUrlPattern()); System.out.println("\ttemplateName:"+extractFailLog.getTemplateName()); System.out.println("\tfieldName:"+extractFailLog.getFieldName()); System.out.println("\tfieldDescription:"+extractFailLog.getFieldDescription()); System.out.println("\tcssPath:"+extractFailLog.getCssPath()); if(extractFailLog.getExtractExpression()!=null) { System.out.println("\textractExpression:" + extractFailLog.getExtractExpression()); } } continue; } Map<String, List<ExtractResultItem>> extractResultItems = extractResult.getExtractResultItems(); for(String field : extractResultItems.keySet()){ List<ExtractResultItem> values = extractResultItems.get(field); if(values.size() > 1){ int j=1; System.out.println("\t多值字段:"+field); for(ExtractResultItem item : values){ System.out.println("\t\t"+(j++)+"、"+field+" = "+item.getValue()); } }else{ System.out.println("\t"+field+" = "+values.get(0).getValue()); } } System.out.println("\tdescription = "+extractResult.getDescription()); System.out.println("\tkeywords = "+extractResult.getKeywords()); } } }
最后,我们运行NeteasyNewsExtractor类,控制台输出如下:
开始初始化URL抽取规则 完成初始化URL抽取规则 1、网页 http://money.163.com/08/1219/16/4THR2TMP002533QK.html 的抽取结果 title = 宗庆后:企业平稳过冬依赖政府内需政策思路转变 content = 娃哈哈董事长 宗庆后 宗庆后: 各位专家和企业朋友,今天没有我演讲的任务,也没有准备,我谈几个感想,经济危机看你怎么看,美国的金融危机收钱就行,用了人家的钱就了,窟窿大的把钱收回来就行了,布什当了两届总统又把美国的钱用完了,现在又要收钱,人民币升值。 说到受到美国金融危机的影响,两三个月的工夫就造成了这么大困难,原因在真正地方,我认为中国就没有分配,经济学家都知道,原始社会的时候就是相互交换,现在分配的方式多式多样的。 改革开放这么多年,有的专家说我们没有政治体制改革,我们应该是政治体制改革和经济体制改革一起进行。这么多年,经济发展就非常快,但没有搞好分配,分配了以后才可以再生产。每次劳动以后就有一个剩余的价值,就没有分配给老百姓用。不能技术再生产怎么解决?就是再出口。我国60%靠出口,前面三十年是靠出口和投资发展。现在订单少了,出口受阻了。 另外我感觉制造业利润太高,税负太重了。所以有些企业家看看自己太辛苦,股市和房地产可以引起暴利,所以没有在制造业坚持发展,没有提高自己企业的核心竞争力。所以股市、房市掉下来,可能2-3个月一下就乱了。 企业的经济危机当中要承担什么责任?我感觉对于经济危机,企业没有办法扭转,关键是国家政策调整,国家政策调整中国经济要不了半年就上来了。拉动内需认识比较统一的,关键是如何拉动内需。 拉动内需关键是老百姓要有钱花,降低企业税收,要企业给员工加工资。你要提高农产品价格,放开农产品价格,等到老百姓有钱才可以花钱。 给了老百姓钱不一定要花,所以我才感觉到蒙代尔说的消费券办法可能效果有限。很多国家都在发消费券,但中国社会本质上还是在限制消费。要解决读书医疗方面的问题,让老百姓没有后顾之忧大量花钱,才可以把内需拉起来,这样工厂才可以活起来。 现在放缩银根根本就没有用了,银行贷给你就要打水飘。所以必须把内需拉起来,让工厂赚钱,这样才可以把经济危机扭转过来。我认为国家要有这个政策,整个发展国家要改变,作为企业来讲,经济比较好的国家都会非常关注企业生存。如果根本就不把企业当回事情,出的政策全部都是把负担转嫁给企业身上,企业一塌,劳动力失业,社会问题就来了,所以企业是社会创造财富最主要的力量,发展经济当中最重要的力量。企业发展员工好了,企业垮台大家就失业了,这就麻烦了。 中国政府现在还是关心企业,开始解决企业的难题,我认为这就是一个机遇。现在出口企业大部分是贴牌加工的,并不是说美国不消费,欧洲不消费,而是叫你委托加工的企业倒了。这就带来了自己品牌开拓国际市场的机会。 国外经济危机就要买中国的产品,这对出口企业也是一个机会。 现在国家出台扶持政策,出口退税,给了有多的优惠政策,对我们来讲也是一个机会。 所以我认为中国的问题很好解决,关键是政策要调整。调整得好,这次经济危机当中就会一点损失都没有,一点影响都没有。如果做到无论销售和利润都增长在4%左右,现金也比较好了,就会一切都好。 我们这些企业老老实实做饮料,没有做任何其他东西,坚持主业发展,把主业做强做大,不做自己没有能力做的事情。 所以今后的企业家心态要稳,并不是一件事情做成功了,什么事情就可以做成功的。有的时候看看别人赚钱,这个钱不是我赚的,所以就不要盲目搞。现在说抄底,抄人家底,就千万不要抄底。 我不太赞同项兵教授的说法,你没有科技创新的话,美国有先进的武器,到处可以打你,到处可以制约你。美国的武器比你先进,美国人就敢说话。所以要科技创新,我们有廉价劳动力创造财富,企业要不断的科技创新,提高竞争力,我们中国才有民族竞争力,这是我们崛起的时候,也是一个机会,我们不要救人家,而是救自己。 谢谢大家! (本文来源:网易财经 ) 【本新闻已有0人评论,点击查看。】 description = 对于经济危机,企业没有办法扭转,关键是国家政策调整,国家政策调整中国经济要不了半年就上来了。拉动内需认识比较统一的,关键是如何拉动内需。拉动内需关键是老百姓要有钱花,降低企业税收,要企业给员工加工资。 keywords = 宗庆后,股票,股市,行情,基金,期货,汇率,证券,证券市场,上市公司,研究报告
好了,我们第一个简单的入门小例子就到这里。
HtmlExtractor是一个Java实现的基于模板的网页结构化信息精准抽取组件,本身并不包含爬虫功能,但可被爬虫或其他程序调用以便更精准地对网页结构化信息进行抽取。
HtmlExtractor是为大规模分布式环境设计的,采用主从架构,主节点负责维护抽取规则,从节点向主节点请求抽取规则,当抽取规则发生变化,主节点主动通知从节点,从而能实现抽取规则变化之后的实时动态生效。
相关推荐
基于Java实现的基于模板的网页结构化信息精准抽取组件。.zip
HtmlExtractor是一个Java实现的基于模板的网页结构化信息精准抽取组件,本身并不包含爬虫功能,但可被爬虫或其他程序调用以便更精准地对网页结构化信息进行抽取。HtmlExtractor是为大规模分布式环境设计的,采用主从...
针对网页噪声和网页非结构化信息抽取模板生成复杂度高的问题,提出了一种快速获取非结构信息抽取模板的算法。该算法先对网页噪声进行预处理,将其DOM树结构进行标签hash映射,通过自动训练的阈值快速判定网页的主要...
本方法中用到了网页分析器htmlparser,采用Java语言编程,工具是eclipse。可以实现把正文放在table结点的HTML网页的正文信息抽取功能。
针对现今较流行的动态Web网页数量巨大、数据价值高,并且网页结构高度模板化的特点,设计了一个基于网页聚类的Web信息自动抽取系统。在DOM抽取技术基础上利用网页聚类寻找高相似簇,并引入列相似度和全局自相似度...
基于改进HMM的半结构化文本信息抽取算法研究,
基于BERT+Biaffine结构的关系抽取模型源码+文档说明.zip这是95分以上高分必过课程设计项目,下载即用无需修改,确保可以运行。也可作为期末大作业。 基于BERT+Biaffine结构的关系抽取模型源码+文档说明.zip这是95...
互联网产品结构化信息抽取技术,季成晖,王小捷,随着电子商务和垂直搜索引擎的发展,产品结构化信息抽取成为数据挖掘、信息检索、自然语言处理的一个研究热点。本文以服装饰品领
基于网页聚类的Web信息自动抽取.pdf
网页信息抽取工具 java网页信息抽取工具 java网页信息抽取工具 java网页信息抽取工具 java网页信息抽取工具 java网页信息抽取工具 java网页信息抽取工具
基于双向循环神经网络和CRF特征模板的信息抽取python源码.zip基于双向循环神经网络和CRF特征模板的信息抽取python源码.zip基于双向循环神经网络和CRF特征模板的信息抽取python源码.zip基于双向循环神经网络和CRF特征...
pytorch实现基于BERT的中文新闻事件抽取项目源码.zip 代码完整下载即用无需修改,确保可以运行。 pytorch实现基于BERT的中文新闻事件抽取项目源码.zip 代码完整下载即用无需修改,确保可以运行。pytorch实现基于...
基于HMM的文本信息的结构抽取,邹莎莎,王秀坤,信息抽取技术是处理海量文本信息,实现信息结构化的有效途径之一。但目前的信息提取方法,大都局限于语义内容的提取,其结构是扁
基于语义结构的信息抽取系统的研究与实现,是关于信息抽取方面的内容,重点在于基于语义方面的信息抽取系统!
现有的Web信息抽取技术大致可以归纳为基于统计理论的、基于视觉特征的、基于DOM树结构的和基于模板的几类。由于网页文本本身具有树结构并且具有一定的相似性,基于DOM树结构和基于模板的抽取技术发展很快而且已经...
基于自动化信息抽取技术的垂直网络爬虫设计与实现,张建宇,王洪波, 随着垂直搜索引擎搜索范围的扩大,如何自动化高效地完成数据爬取任务成了一个重要的问题。目前大多数的网络爬虫使用人工定义规��
一种基于树结构的Web数据自动抽取方法.pdf
为了把自然语言处理技术有效的运用到网页文档中,本文提出了一种依靠统计信息,从中文新闻类 ...采用该方法实现的网页文本抽取工具目前为一个面向旅游领域的问答系统提供语料支持,很好的满足了 问答系统的需求。
在论述了半结构化Web 信息抽取技术总体解决方案的基础上,研究了Web 信息抽取的实现技术,并从应用的角度提出一种新的半结构化信息获取方法。该方法包括网页分析过程、映射的自动生成和信息抽取过程。在Web 信息抽取的...
通过文档对象模型(DOM)解析以及检索、抽取、映射等规则的定义,设计并实现了一种具有规则归纳能力的信息抽取系统,用于Web信息的自动检索。在用于抽取规则归纳的框架下,还重点对用于生成抽取模式的WHISK学习算法...