3

我受到 Safari 的阅读器功能的启发,它可以让您忽略网页上除故事之外的所有内容(所有文本、链接和图像构成页面的点,但没有任何标记、前因或后果) . 我想制作一个基于 Java 的版本作为轻量级“浏览器”。

我的问题在这里:我不知道如何辨别主要内容。在查看了诸如MSN 文章同人小说之类的 Reader 识别页面后,我意识到 Reader 识别的实际文本不仅难以找到,而且不一致,并且带有看似随机的标签。例如,虽然新闻链接开始其故事<div class="postBody">并且每个段落都在<p>s 中,但链接的小说链接开始<div class="chapter_content" id="chapter_container">并且每个段落都以<br /><div style='float:left; height:1.0em; width:3.0em;'></div>但不在其自己的容器中。

由于 Safari 支持这个“阅读器”界面,显然有办法做到这一点,所以我不会问它是否存在。相反,我想知道这一点:无论页面本身是如何构造的,什么是一种好的、快速的、Java 支持的算法,用于提取网页上故事的标题和正文?

对于上下文,我已经创建了一个以 JEditorPane 作为窗口的基本浏览器,其 EditorKit 设置为 HTMLEditorKit,并且正在使用该setPage(URL page)方法显示目标页面,但这可以改变我需要的。

4

1 回答 1

0

如果您愿意使用服务,您应该查看InstapaperReadability API;否则,您可以窥探arc90 实验室的 JavaScript 概念验证的 Readability 实现。您还可以在 GitHub 上找到Java 和其他几种语言的 Readability的几个 端口。

于 2013-02-07T07:16:48.787 回答