分为以下几个部分:
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);
}