9

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

我已经到了可以接受 URL、抓取它以获取元关键字并适当地获取标题/描述的地步,但是对于确定用户可能想要分享的“可能”照片的最佳方法,我有点坚持.

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

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

还有其他人有什么建议、建议或提示吗?

4

2 回答 2

7

我前段时间写了一些类似的东西来从抓取的博客文章中获取图像。我选择图像的标准类似于获取页面上所有图像的列表,然后分配“优先点”:

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

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

于 2010-03-11T01:38:44.483 回答
3

我没有这样做的任何直接经验,因此我不确定是否有任何特定的最佳实践,但总的来说,由于网站实现中发现的可变性,我认为查看多个因素的启发式方法是有意义的。

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

图像属性:

  • 宽度和高度满足最低阈值
  • 纵横比是合理的(平铺的背景图像可能具有极端的纵横比,这很好地表明该图像可能不适合)
  • 图像中存在不止一种颜色(较难检测,但可以避免各种背景图像)

图像上下文:

  • 图像不会在页面上重复(这样可以避免使用可能重复的图标和其他设计元素)
  • 出现在页面上的 h1、h2 等标签之后;这让您了解来自页面中间的图像,再次避免设计元素。
  • 有一个 alt 标签(虽然这不是一直使用的,所以可能没有提供太多有用的信息)

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

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

于 2010-03-11T01:33:57.050 回答