我想清理一个不规则的网页内容 - (可能是html,pdf图片等),主要是html。我正在使用tika解析器。但我不知道如何应用xpath,因为我在html清理器中使用。
我使用的代码是,
BodyContentHandler handler = new BodyContentHandler();
Metadata metadata = new Metadata();
ParseContext context = new ParseContext();
URL u = new URL("http://stackoverflow.com/questions/9128696/is-there-any-way-to-reach- drop-moment-in-drag-and-drop");
new HtmlParser().parse(u.openStream(),handler, metadata, context);
System.out.println(handler.toString());
但在这种情况下,我没有输出。但对于url- google.com,我正在获得输出。
在任何一种情况下,我都不知道如何应用xpath。
请任何想法......
尝试将自定义xpath作为主体内容处理程序使用的方式,
HttpClient client = new HttpClient();
GetMethod method = new GetMethod("http://stackoverflow.com/questions/9128696/is-there-any-way-to-reach-drop-moment-in-drag-and-drop");
int status = client.executeMethod(method);
HtmlParser parse = new HtmlParser();
XPathParser parser = new XPathParser("xhtml", "http://www.w3.org/1999/xhtml");
//Matcher matcher = parser.parse("/xhtml:html/xhtml:body/descendant:node()");
Matcher matcher = parser.parse("/html/body//h1");
ContentHandler textHandler = new MatchingContentHandler(new WriteOutContentHandler(), matcher);
Metadata metadata = new Metadata();
ParseContext context = new ParseContext();
parse.parse(method.getResponseBodyAsStream(), textHandler,metadata ,context);
System.out.println("content: " + textHandler.toString());
但是没有获取给定xpath中的内容..
答案 0 :(得分:2)
我建议您查看Tika附带的BodyContentHandler的源代码。 BodyContentHandler仅基于xpath
返回body标记内的xml一般情况下,您应该使用MatchingContentHandler将您选择的ContentHandler包装为XPath,这是BodyContentHandler在内部执行的操作。