我受到了Safari的读者功能的启发,它可以让你忽略除了故事之外的网页上的所有内容(构成页面点的所有文本,链接和图像,但没有标记,前提,或结果)。我想将它的基于Java的版本作为轻量级“浏览器”。
我的问题在于:我不知道如何辨别主要内容。在检查了这些Reader识别的页面MSN articles和fan fictions后,我意识到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)
方法显示目标页面,但这可能会改变我需要。
答案 0 :(得分:0)
如果您愿意使用某项服务,则应查看Instapaper或Readability API;否则,你可以窥视arc90 lab's JavaScript proof-of-concept implementation的可读性。您还可以在GitHub上找到several ports of Readability到Java和several other languages。