从URL获取相关图像和摘要

时间:2012-07-24 15:53:48

标签: java android

我不确定如何定义它,但基本上我想从给定的URL中检索相关的图像和文本摘要。

例如 - 当用户将链接粘贴到Facebook上的共享框时,它会立即从文章本身和相关图像中获取文章标题和/或短文本块。 它从来没有得到错误的图像,如网站的标识或文章本身周围的文字...

相同的Google+和其他社交网络或此类服务。

我开始假设我需要使用下面的代码阅读页面内容,如何确定哪个图像是相关的(来自文章正文)以及哪个文本是文章文本?

URL oracle = new URL("http://www.oracle.com/");
BufferedReader in = new BufferedReader(
    new InputStreamReader(oracle.openStream()));

String inputLine;
while ((inputLine = in.readLine()) != null)
    System.out.println(inputLine);

in.close();

我当然不是在这里要求代码(除非某人有一个代码片段并且愿意分享)但更多的是如何处理这个......我从哪里开始?

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:9)

我可以推荐Boilerpipe用于原始文本提取,它使用一些高级算法来查找相关文本并删除它周围的样板(如菜单,页脚等等)。

关于图像,除了使用评论中已经建议的元标记之外,您还可以使用html解析器(如htmlparser)来提取所有“img”标记,然后使用一些启发式方法来选择最佳一。我正在使用一些启发式:

  • 没有小于30像素的图片,它们通常是图标或广告跟踪图片
  • 平方越好,这就避免了统治者和类似的东西
  • 没有标准的已知横幅尺寸
  • 页面越高越好
  • 靠近Boilerplate提取的内容(这很难)

我一直在制作中使用这些启发式页面抓取一段时间,并且它们会产生很好的效果。

但是,要正确应用这些规则,您可能需要下载图像以获取其大小和/或解析样式属性。

如果您计划运行此服务器端,作为页面抓取服务,那么没关系。如果你打算在Android设备上动态执行它,它可能太重了。