tika html body,Apache Tika how to extract html body with out head

I am looking to extract entire body content of html except header and footer, however I am getting exception

org.xml.sax.SAXException: Namespace http://www.w3.org/1999/xhtml not declared

Below is my code that i have created as mentioned at

import org.apache.tika.exception.TikaException;

import org.apache.tika.io.TikaInputStream;

import org.apache.tika.parser.AutoDetectParser;

import org.apache.tika.sax.BodyContentHandler;

import org.apache.tika.sax.ToHTMLContentHandler;

import org.apache.tika.sax.ToXMLContentHandler;

import org.apache.tika.sax.XHTMLContentHandler;

import org.apache.tika.sax.xpath.Matcher;

import org.apache.tika.sax.xpath.MatchingContentHandler;

import org.apache.tika.sax.xpath.XPathParser;

import org.xml.sax.ContentHandler;

import org.xml.sax.SAXException;

import org.apache.tika.metadata.Metadata;

import java.io.File;

//import java.io.FileInputStream;

import java.io.IOException;

import java.io.InputStream;

public class NewtikaXpath {

public static void main(String args[]) throws IOException, SAXException, TikaException {

XPathParser xhtmlParser = new XPathParser("xhtml", XHTMLContentHandler.XHTML);

Matcher divContentMatcher = xhtmlParser.parse("/xhtml:html/xhtml:body/xhtml:table/descendant::node()");

ContentHandler xhandler = new MatchingContentHandler(new ToXMLContentHandler(), divContentMatcher);

AutoDetectParser parser = new AutoDetectParser();

//ToHTMLContentHandler htmlhandler = new ToHTMLContentHandler();

//ContentHandler textHandler = new BodyContentHandler();

Metadata xmetadata = new Metadata();

try (InputStream stream = TikaInputStream.get(new File("///httpmoneycnncomnewsworldiidHBNQL1.html"))){

parser.parse(stream, xhandler, xmetadata);

System.out.println("text:\n" + xhandler.toString());

}

}

}

the exception I am getting is

Exception in thread "main" org.xml.sax.SAXException: Namespace http://www.w3.org/1999/xhtml not declared

at org.apache.tika.sax.ToXMLContentHandler$ElementInfo.getPrefix(ToXMLContentHandler.java:62)

at org.apache.tika.sax.ToXMLContentHandler$ElementInfo.getQName(ToXMLContentHandler.java:68)

at org.apache.tika.sax.ToXMLContentHandler.startElement(ToXMLContentHandler.java:148)

at org.apache.tika.sax.ContentHandlerDecorator.startElement(ContentHandlerDecorator.java:126)

at org.apache.tika.sax.xpath.MatchingContentHandler.startElement(MatchingContentHandler.java:60)

at org.apache.tika.sax.ContentHandlerDecorator.startElement(ContentHandlerDecorator.java:126)

at org.apache.tika.sax.SecureContentHandler.startElement(SecureContentHandler.java:250)

at org.apache.tika.sax.ContentHandlerDecorator.startElement(ContentHandlerDecorator.java:126)

at org.apache.tika.sax.ContentHandlerDecorator.startElement(ContentHandlerDecorator.java:126)

at org.apache.tika.sax.ContentHandlerDecorator.startElement(ContentHandlerDecorator.java:126)

at org.apache.tika.sax.SafeContentHandler.startElement(SafeContentHandler.java:264)

at org.apache.tika.sax.XHTMLContentHandler.startElement(XHTMLContentHandler.java:255)

at org.apache.tika.sax.XHTMLContentHandler.startElement(XHTMLContentHandler.java:285)

at org.apache.tika.parser.html.HtmlHandler.startElementWithSafeAttributes(HtmlHandler.java:171)

at org.apache.tika.parser.html.HtmlHandler.startElement(HtmlHandler.java:133)

at org.apache.tika.sax.ContentHandlerDecorator.startElement(ContentHandlerDecorator.java:126)

at org.apache.tika.parser.html.XHTMLDowngradeHandler.startElement(XHTMLDowngradeHandler.java:60)

at org.ccil.cowan.tagsoup.Parser.push(Parser.java:794)

at org.ccil.cowan.tagsoup.Parser.rectify(Parser.java:1061)

at org.ccil.cowan.tagsoup.Parser.stagc(Parser.java:1016)

at org.ccil.cowan.tagsoup.HTMLScanner.scan(HTMLScanner.java:567)

at org.ccil.cowan.tagsoup.Parser.parse(Parser.java:449)

at org.apache.tika.parser.html.HtmlParser.parse(HtmlParser.java:122)

at org.apache.tika.parser.CompositeParser.parse(CompositeParser.java:280)

at org.apache.tika.parser.CompositeParser.parse(CompositeParser.java:280)

at org.apache.tika.parser.AutoDetectParser.parse(AutoDetectParser.java:120)

at org.apache.tika.parser.AutoDetectParser.parse(AutoDetectParser.java:136)

at com.fractal.NewtikaXpath.main(NewtikaXpath.java:35)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:498)

at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)

While I do understand that as per TIKA-1215 we should not wrap content handlers , I dont see any alternative approach to resolving this issue, as the simple bodycontenthandler is not helping, I verified a lot of stackoverflow cases similar to this but I couldn't find a solution any where. Any advice or solution or pointer is much appreciated.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值