package guang.crawler.extension.filedExtractor;
import guang.crawler.commons.DataFields;
import guang.crawler.commons.Page;
import guang.crawler.commons.WebURL;
import guang.crawler.commons.parserData.HtmlParseData;
import guang.crawler.commons.parserData.ParseData;
import guang.crawler.commons.parserData.TextParseData;
import guang.crawler.connector.WebDataTableConnector;
/**
* 默认的域抽取器,将页面内容以及必要的WebURL的信息存储到HBase中
*
* @author sun
*
*/
public class DefaultFieldExtractor implements FieldsExtractor {
/**
* 将整个页面内容作为域来存储.
*
* @param page
*/
public static void extractPageBody(final Page page) {
WebURL webURL = page.getWebURL();
DataFields fields = page.getDataToSave();
String docID = webURL.getDocid();
fields.addFiled(docID, WebDataTableConnector.FAMILY_MAIN_DATA, "depth",
String.valueOf(webURL.getDepth()))
.addFiled(docID, WebDataTableConnector.FAMILY_MAIN_DATA, "url",
String.valueOf(webURL.getURL()));
ParseData parseData = page.getParseData();
if (parseData instanceof HtmlParseData) {
HtmlParseData data = (HtmlParseData) parseData;
fields.addFiled(docID, WebDataTableConnector.FAMILY_MAIN_DATA,
"page", data.getHtml());
} else if (page.getParseData() instanceof TextParseData) {
TextParseData textParseData = (TextParseData) page.getParseData();
String text = textParseData.getTextContent();
fields.addFiled(docID, WebDataTableConnector.FAMILY_MAIN_DATA,
"page", text);
}
}
@Override
public void extractFields(final Page page) {
DefaultFieldExtractor.extractPageBody(page);
}
}