【问题标题】:Get relevant image and summary from URL从 URL 获取相关图像和摘要
【发布时间】:2012-07-25 02:21:09
【问题描述】:

我不确定如何定义它,但基本上我想从给定的 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();

我当然不是在这里要求代码(除非有人拥有例如 sn-p 并且愿意分享),而是更多关于如何处理这个问题......我从哪里开始?

任何帮助将不胜感激!

【问题讨论】:

  • 谢谢,会调查它,但它似乎相当有限。我认为有一些更通用的方法可以做到这一点,而不是 Facebook 是如何做到的。
  • 嗨,liorry,您在此期间成功了吗?我非常感谢有关该主题的更新。谢谢!

标签: java android


【解决方案1】:

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

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

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

一段时间以来,我一直在生产环境中使用这些启发式方法进行页面抓取,并且效果很好。

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

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

【讨论】:

  • 感谢您的详细回答。这些信息对我来说是一个很好的开始。我确实想知道 Google+ Android 应用程序似乎正在为带有链接的帖子获取图像和信息……但也许他们是在服务器端这样做的……太糟糕了,它被混淆了并且不是开源的 :)
猜你喜欢
  • 2018-08-24
  • 1970-01-01
  • 2018-01-12
  • 1970-01-01
  • 2011-03-18
  • 1970-01-01
  • 2015-01-29
  • 1970-01-01
相关资源
最近更新 更多