首先,咱們新建一個maven工程,在pom.xml中加入HtmlExtractor依賴,以下所示:css
<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">,內容以下:html
<?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,內容以下: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) { //一、構造抽取規則 List<UrlPattern> urlPatterns = new ArrayList<>(); //1.一、構造URL模式 UrlPattern urlPattern = new UrlPattern(); urlPattern.setUrlPattern("http://money.163.com/\\d{2}/\\d{4}/\\d{2}/[0-9A-Z]{16}.html"); //1.二、構造HTML模板 HtmlTemplate htmlTemplate = new HtmlTemplate(); htmlTemplate.setTemplateName("網易財經頻道"); htmlTemplate.setTableName("finance"); //1.三、將URL模式和HTML模板創建關聯 urlPattern.addHtmlTemplate(htmlTemplate); //1.四、構造CSS路徑 CssPath cssPath = new CssPath(); cssPath.setCssPath("h1"); cssPath.setFieldName("title"); cssPath.setFieldDescription("標題"); //1.五、將CSS路徑和模板創建關聯 htmlTemplate.addCssPath(cssPath); //1.六、構造CSS路徑 cssPath = new CssPath(); cssPath.setCssPath("div#endText"); cssPath.setFieldName("content"); cssPath.setFieldDescription("正文"); //1.七、將CSS路徑和模板創建關聯 htmlTemplate.addCssPath(cssPath); //可象上面那樣構造多個URLURL模式 urlPatterns.add(urlPattern); //二、獲取抽取規則對象 ExtractRegular extractRegular = ExtractRegular.getInstance(urlPatterns); //注意:可經過以下3個方法動態地改變抽取規則 //extractRegular.addUrlPatterns(urlPatterns); //extractRegular.addUrlPattern(urlPattern); //extractRegular.removeUrlPattern(urlPattern.getUrlPattern()); //三、獲取HTML抽取工具 HtmlExtractor htmlExtractor = new DefaultHtmlExtractor(extractRegular); //四、抽取網頁 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); //五、輸出結果 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類,控制檯輸出以下:git
開始初始化URL抽取規則 完成初始化URL抽取規則 一、網頁 http://money.163.com/08/1219/16/4THR2TMP002533QK.html 的抽取結果 title = 宗慶後:企業平穩過冬依賴政府內需政策思路轉變 content = 娃哈哈董事長 宗慶後 宗慶後: 各位專家和企業朋友,今天沒有我演講的任務,也沒有準備,我談幾個感想,經濟危機看你怎麼看,美國的金融危機收錢就行,用了人家的錢就了,窟窿大的把錢收回來就好了,布什當了兩屆總統又把美國的錢用完了,如今又要收錢,人民幣升值。 說到受到美國金融危機的影響,兩三個月的工夫就形成了這麼大困難,緣由在真正地方,我認爲中國就沒有分配,經濟學家都知道,原始社會的時候就是相互交換,如今分配的方式多式多樣的。 改革開放這麼多年,有的專家說咱們沒有政治體制改革,咱們應該是政治體制改革和經濟體制改革一塊兒進行。這麼多年,經濟發展就很是快,但沒有搞好分配,分配了之後才能夠再生產。每次勞動之後就有一個剩餘的價值,就沒有分配給老百姓用。不能技術再生產怎麼解決?就是再出口。我國60%靠出口,前面三十年是靠出口和投資發展。如今訂單少了,出口受阻了。 另外我感受制造業利潤過高,稅負過重了。因此有些企業家看看本身太辛苦,股市和房地產能夠引發暴利,因此沒有在製造業堅持發展,沒有提升本身企業的核心競爭力。因此股市、房市掉下來,可能2-3個月一下就亂了。 企業的經濟危機當中要承擔什麼責任?我感受對於經濟危機,企業沒有辦法扭轉,關鍵是國家政策調整,國家政策調整中國經濟要不了半年就上來了。拉動內需認識比較統一的,關鍵是如何拉動內需。 拉動內需關鍵是老百姓要有錢花,下降企業稅收,要企業給員工加工資。你要提升農產品價格,放開農產品價格,等到老百姓有錢才能夠花錢。 給了老百姓錢不必定要花,因此我才感受到蒙代爾說的消費券辦法可能效果有限。不少國家都在發消費券,但中國社會本質上仍是在限制消費。要解決讀書醫療方面的問題,讓老百姓沒有後顧之憂大量花錢,才能夠把內需拉起來,這樣工廠才能夠活起來。 如今放縮銀根根本就沒有用了,銀行貸給你就要打水飄。因此必須把內需拉起來,讓工廠賺錢,這樣才能夠把經濟危機扭轉過來。我認爲國家要有這個政策,整個發展國家要改變,做爲企業來說,經濟比較好的國家都會很是關注企業生存。若是根本就不把企業當回事情,出的政策所有都是把負擔轉嫁給企業身上,企業一塌,勞動力失業,社會問題就來了,因此企業是社會創造財富最主要的力量,發展經濟當中最重要的力量。企業發展員工好了,企業垮臺你們就失業了,這就麻煩了。 中國政府如今仍是關心企業,開始解決企業的難題,我認爲這就是一個機遇。如今出口企業大部分是貼牌加工的,並非說美國不消費,歐洲不消費,而是叫你委託加工的企業倒了。這就帶來了本身品牌開拓國際市場的機會。 國外經濟危機就要買中國的產品,這對出口企業也是一個機會。 如今國家出臺扶持政策,出口退稅,給了有多的優惠政策,對咱們來說也是一個機會。 因此我認爲中國的問題很好解決,關鍵是政策要調整。調整得好,此次經濟危機當中就會一點損失都沒有,一點影響都沒有。若是作到不管銷售和利潤都增加在4%左右,現金也比較好了,就會一切都好。 咱們這些企業老老實實作飲料,沒有作任何其餘東西,堅持主業發展,把主業作強作大,不作本身沒有能力作的事情。 因此從此的企業家心態要穩,並非一件事情作成功了,什麼事情就能夠作成功的。有的時候看看別人賺錢,這個錢不是我賺的,因此就不要盲目搞。如今說抄底,抄人家底,就千萬不要抄底。 我不太贊同項兵教授的說法,你沒有科技創新的話,美國有先進的武器,處處能夠打你,處處能夠制約你。美國的武器比你先進,美國人就敢說話。因此要科技創新,咱們有廉價勞動力創造財富,企業要不斷的科技創新,提升競爭力,咱們中國纔有民族競爭力,這是咱們崛起的時候,也是一個機會,咱們不要救人家,而是救本身。 謝謝你們! (本文來源:網易財經 ) 【本新聞已有0人評論,點擊查看。】 description = 對於經濟危機,企業沒有辦法扭轉,關鍵是國家政策調整,國家政策調整中國經濟要不了半年就上來了。拉動內需認識比較統一的,關鍵是如何拉動內需。拉動內需關鍵是老百姓要有錢花,下降企業稅收,要企業給員工加工資。 keywords = 宗慶後,股票,股市,行情,基金,期貨,匯率,證券,證券市場,上市公司,研究報告
好了,咱們第一個簡單的入門小例子就到這裏。github
HtmlExtractor是一個Java實現的基於模板的網頁結構化信息精準抽取組件,自己並不包含爬蟲功能,但可被爬蟲或其餘程序調用以便更精準地對網頁結構化信息進行抽取。架構
HtmlExtractor是爲大規模分佈式環境設計的,採用主從架構,主節點負責維護抽取規則,從節點向主節點請求抽取規則,當抽取規則發生變化,主節點主動通知從節點,從而能實現抽取規則變化以後的實時動態生效。app