Android:提取文章主要内容

时间:2016-03-12 15:13:24

标签: android html jsoup extraction

目前我正在创建一个Android应用程序,它允许从网站中提取主要内容和图片。现在我使用Jsoup API从HTML中提取所有p标记。但是,这不是一个好的解决方案。任何建议或更好的解决方案使我能够从Android网站中提取主要内容和图片?

3 个答案:

答案 0 :(得分:2)

我找不到任何适合我的内容,所以我发布了Goose for Android,在这里:https://github.com/milosmns/goose

以下是一些描述......

  

文档清理

     

当您将URL传递给Goose时,它开始做的第一件事就是干净   提升文档以便于解析。它将通过   整个文档和删除评论,共同的社交网络共享   元素,将em和其他标签转换为纯文本节点,尝试   将用作文本节点的div转换为段落,以及执行一般操作   文件清理(空格,新行,引号,编码等)。

     

内容/图片提取

     

在处理随机文章链接时,您必然会遇到   最疯狂的HTML文件。有些网站甚至想要包含2个或更多HTML   每个站点的文件。 Goose使用基于聚类的评分系统   英语会阻止您在代码中找到的单词和其他因素。   当节点向下移动时,鹅也会下降得分   降低他们的分数。目标是找到最强的分组   父容器内的文本节点,并假设它是相关的   一组内容,只要它在页面上足够高(上)。

     

图像提取是最长的一次。试图找到   事实证明,页面上最重要的图像具有挑战性和必要性   下载所有图像以使用外部手动检查它们   工具(不是所有图像都被考虑,Goose检查mime类型,   尺寸,字节大小,压缩质量等)。 Java的形象   功能太不可靠和不准确。在Android上,Goose   使用BitmapFactory类,它有很好的文档,测试和   快速准确。从Goose的顶级节点分析图像   找到内容,然后尝试向外递归运行   找到好的图像 - 鹅也会检查这些图像是否是广告,横幅   或作者徽标,如果是,则忽略它们。

     

输出格式

     

一旦Goose拥有我们认为内容所在的顶级节点,Goose会   尝试为输出格式化该节点的内容。例如,   对于NLP类型的应用程序,Goose的输出格式化程序只会吸引所有   文本并忽略其他一切,其他(自定义)提取器可以   旨在提供更多Flipboardy类型的体验。

答案 1 :(得分:1)

为什么你认为使用Jsoup不是一个好的解决方案?

我为不同的网页编写了许多网页抓取工具,根据我的经验,Jsoup是完成该任务的方法。您应该研究Jsoup Syntax它非常强大,使用正确的选择器,您可以非常轻松地从HTML文档中提取大部分信息。通常,当文档没有idclass属性或其他独特功能时,提取信息会变得更加困难。

您可能感兴趣的其他HTML解析器是JTidyTagSoup

答案 2 :(得分:1)

您可以尝试 textracto api它自动识别HTML文档的主要内容。还有机会解析OpenGraph元数据,因此您还可以提取图片(og:image)。