从网页中提取“最佳”图像的技术

时间:2010-03-11 01:05:33

标签: image facebook share extraction

我正在尝试为我的网站构建类似于Facebook“共享”功能的东西。

我已经达到了可以接受网址,抓取元关键字以及适当获取标题/描述的程度,但我对确定用户可能的“可能”照片的最佳方式感到有些困惑想分享。

我目前使用SimpleXMLElement将页面转换为可遍历的DOM,并找到所有标记,将它们转换为绝对URL。在那之后,我不确定如何找到合适的缩略图。

我是否全部下载它们,并按文件大小排序?我是否使用某种启发式方法,“在页面中间遇到过”?

是否有其他人有任何建议,建议或提示?

2 个答案:

答案 0 :(得分:7)

前段时间我写了类似的内容,以便从博客文章中删除图片。我选择图像的标准是获取页面上所有图像列表然后分配“优先级点”的行为:

  • 忽略从AdBlocker列表中收集的黑名单托管的图片
  • 忽略间接图像,例如链接到样式表或IFRAME
  • 忽略50像素宽或高的图像
  • 忽略不止一次重复的图像
  • 为从主机白名单托管的图像分配优先级(例如photobucket,imageshack.us)
  • 将优先级分配给页面上最大的3个图像
  • 为同一主机上的图像指定优先级分数
  • 为定义了ALT标记的图像指定优先级点
  • 为出现在P标签中的图像指定优先点

然后选择优先级最高的那个。它当然不是万无一失或过于科学,但它经常得到有用的东西。

答案 1 :(得分:3)

我没有任何直接经验,所以我不确定是否有任何特定的最佳实践,但总的来说,我认为考虑几个因素的启发式方法是有意义的,因为网站实现中发现的可变性

我会看两组项目:图像属性以及图像放置位置/方式的上下文。

图片属性:

  • 宽度和高度符合最低阈值
  • 宽高比是合理的(瓷砖可能具有极高的宽高比的背景图像,这提供了图像可能不合适的良好指示)
  • 图像中存在多种颜色(难以检测,但可能会避免各种背景图像)

图片上下文:

  • 图片不会在页面上重复(这可以避免使用可能重复的图标和其他设计元素)
  • 在页面上的h1,h2等标签后发生;这就是关于来自页面中间的图像,再次避免设计元素。
  • 有一个alt标签(虽然这不是一贯使用的,所以可能没有提供太多有用的信息)

我会为之前的项目分配权重,然后根据每个图像满足规则的程度对您找到的图像进行排名。

另外,请注意某些页面可能使用CSS(或Flash等)来显示图像。这些我们的图像范围之外(根据您定义的算法);也许不是什么大问题,但需要考虑的事情。