问读nutch 1.2 解析html的插件 HtmlParser插件

    技术2022-05-19  22

    分为以下几个部分:

     

    1 解析成Dom 通过sax,

    DocumentFragment root;

    //把网页内容content转化byte byte[] contentInOctets = content.getContent();

     

    //SAX解析抽取外部信息             InputSource input = new InputSource(new ByteArrayInputStream(                     contentInOctets));

     

    //设置编码

    input.setEncoding(encoding);

     

    root = parse(input);

     

    2 通过root解析出meta,title等。

     

    3 //解析成功标记         ParseStatus status = new ParseStatus(ParseStatus.SUCCESS);         if (metaTags.getRefresh()) {             status.setMinorCode(ParseStatus.SUCCESS_REDIRECT);             status.setArgs(new String[] { metaTags.getRefreshHref().toString(),                     Integer.toString(metaTags.getRefreshTime()) });         }         //解析ParseData         ParseData parseData = new ParseData(status, title, outlinks, content                 .getMetadata(), metadata);                 ParseResult parseResult = ParseResult.createParseResult(content                 .getUrl(), new ParseImpl(text, parseData));

     

    4 // 在解析时,运行过滤器         ParseResult filteredParse = this.htmlParseFilters.filter(content,                 parseResult, metaTags, root);         if (metaTags.getNoCache()) { // not okay to cache             for (Map.Entry<org.apache.hadoop.io.Text, Parse> entry : filteredParse)                 entry.getValue().getData().getParseMeta().set(                         Nutch.CACHING_FORBIDDEN_KEY, cachingPolicy);         }


    最新回复(0)