在给定URL的情况下,您如何找到网站的“主要”图片?

时间:2010-10-30 03:11:52

标签: html image parsing templates

假设您已获得http://nytimes.com 你会如何拉出“主要”形象?

我问的原因是因为Flipboard只能使用网址从网站上抓取主图像。

您可以解析出所有图片代码。那么呢?

4 个答案:

答案 0 :(得分:13)

我不相信有一种标准方法。您可以从查找Open Graph Protocol图片代码开始。 Facebook使用这些来为状态更新和评论中发布的网址选择图像。

<meta property="og:image" content="http://ia.media-imdb.com/rock.jpg"/>

如果您准备使用第三方,Embedly将此作为收费服务提供。

  

Embedly提供了一个功能强大的API,可将标准网址转换为嵌入式网址   来自218家领先供应商的视频,图片和丰富的文章预览。

答案 1 :(得分:10)

有很多策略可以确定网址的“主要”图片是什么:

  • 许多网站现在宣布主要形象是什么(对于Facebook OpenGraph或Twitter卡)
  • 有时候,可以通过URL或通过API调用来猜测图像(尤其适用于Instagram等图像托管网站)
  • 还可以通过利用内容提取技术(可读性)分析网页来确定主图像。您可能希望过滤掉“噪音”以摆脱跟踪像素或广告。
  • 如果所有这些技术都失败了,您可以下载所有图像,并假设最大的图像是最有趣的。

我创建了一个JavaScript库,它使用大多数这些技术来确定网址的“主要”图片:ImageResolver

答案 2 :(得分:3)

确实没有任何东西被认为是网页中的“主要”图像 - 没有HTML或其他任何东西来区分它。更不用说你可能必须阅读CSS中的所有图像(或者更确切地说是背景图像等)。但如果我必须这样做,我会做的就是:

  1. 首先,我会决定一个合适的图像尺寸,比如最小400x400。 (我不想挑选任何旧图像,非常小的东西可能会扩展到可怕的程度)
  2. 然后我会遍历页面上的每个图像。
  3. 对于我遇到的每张图片,我会检查它的大小3。 如果它是400x400(我的预定义大小)或更大,我会使用此图像。 如果不是,我会检查它是迄今为止我发现的最大图像,如果是这样,请将其信息保存在旁边。
  4. 一旦达到预定数量的图像,我就检查了

    (因为参数可以说是10,但肯定你可能要高得多)我会使用我发现的最大图像(存放到侧面),因为我不想无限期地扫描页面对于图像!

答案 3 :(得分:0)

Facebook允许用户选择其中一个被认为是“主要”图像的图像之一。至于自动确定“主”图像,我会根据页面位置,大小,与文本的关系以及(如果你想要更复杂)的视觉内容来判断它。

例如,您可以使用简单的人脸检测程序,或者查看颜色分类以确定图片是否对您“感兴趣”。

编辑:在www.nytimes.com的情况下,我可能只是看一下页面结构,因为一个大的图像旋转木马正好位于H1标签下面。