2012-07-24 27 views
9

我不确定如何定义它,但基本上我想从给定的URL检索相关图像和文本摘要。从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

也许它会帮助你http://stackoverflow.com/questions/5482897/extract-information-from-link-like-facebook-wall – logcat 2012-07-24 16:04:35

+0

谢谢,将看看它,但它似乎相当有限。我认为有一些更通用的方式来做到这一点,而不是Facebook如何做到这一点。 – 2012-07-24 18:06:15

+0

嗨汽车,你有没有设法做到这一点?我真的很感激这个话题的更新。谢谢! – Cos 2012-10-26 15:59:19

回答

9

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

关于图片,除了使用meta标签,如注释中已经提到的,您可以使用html解析器(如htmlparser)来提取所有“img”标签,然后使用一些启发式来选择最好的。我使用了一些启发,如:

  • 没有图片小于30像素,它们通常是图标或广告跟踪图像
  • 平方,这样就避免了统治者和类似的东西
  • 没有标准所知的旗帜尺寸越好
  • 在页面的样板提取的更好
  • 近内容(这是硬)

我一直在使用较高这是一段时间的页面抓取生产的启发式方法,并且它们给出了很好的结果。

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

如果您打算运行此服务器端,作为页面抓取服务,那就没关系。如果您打算在Android设备上执行此操作,则可能会太重。

+0

谢谢你的详细解答。这些信息对我来说是一个很好的开始。我很想知道Google+ Android应用程序似乎在为链接提供图像和信息,但也许他们在服务器端执行它...太糟糕了,它的混淆和不开源:) – 2012-07-24 19:08:35