如何使用 Apache Tika和 XPath解析随机 HTML 页面

问题描述

我是 Tika 的新手,很难理解它。 我想要实现的是提取 HTML 页面(可以是任何网页)的链接的 href。

对于试用版,我只是尝试使用 XPath 提取链接(甚至只是第一个)。但是我永远做对了,处理程序总是空的。 (在本例中,我删除XHTML: namspace 位,否则我会遇到 SAX 错误)。

代码示例如下。非常感谢您的帮助:)

XPathParser xhtmlParser = new XPathParser ("xhtml",XHTMLContentHandler.XHTML);
org.apache.tika.sax.xpath.Matcher anchorLinkContentMatcher = xhtmlParser.parse("//body//a");
ContentHandler handler = new MatchingContentHandler(
    new ToXMLContentHandler(),anchorLinkContentMatcher);

HtmlParser parser = new HtmlParser();
Metadata Metadata = new Metadata();
ParseContext pcontext      = new ParseContext();
try {
    parser.parse(urlContentStream,handler,Metadata,pcontext);
    System.out.println(handler);
}
catch (Exception e)
{
....
}

解决方法

我找到了一个答案(至少为了让一些东西可以工作,即使还不是最终版本,我从处理程序那里得到了一些东西)。 答案在java tika how to convert html to plain text retaining specific element