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

我已经达到了可以接受 URL、抓取元关键字并适当获取标题/描述的程度,但对于确定用户可能想要共享的“可能”照片的最佳方法,我有点困惑。

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

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

还有其他人有任何建议、建议或技巧吗?

有帮助吗?

解决方案

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

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

然后选择最优先的点。它当然不是万无一失的,也不是过于科学,但它往往会得到一些有用的东西。

其他提示

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

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

图像属性:

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

图像上下文:

  • 图像不会在页面上重复(这可以避免使用可能重复的图标和其他设计元素)
  • 出现在页面的h1、h2等标签之后;这让你明白了关于来自页面中间的图像的观点,再次避免了设计元素。
  • 有一个 alt 标签(尽管这并没有被一致使用,所以可能不会提供太多有用的信息)

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

另请注意,某些页面可能使用 CSS(或 Flash 等)来显示图像。这些超出了您的图像权限(根据您定义的算法);也许没什么大不了的,但值得考虑。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top