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

TIM*_*MEX 13 html parsing templates image

让我们说你给了http://nytimes.com 你会如何拉出"主要"形象?

我问的原因是因为Flipboard能够从网站上获取主图像,只需使用URL.

您可以解析出所有图像标记.但那又怎样?

Oll*_*ass 13

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

<meta property="og:image" content="http://ia.media-imdb.com/rock.jpg"/>
Run Code Online (Sandbox Code Playgroud)

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

Embedly提供了一个功能强大的API,可将标准URL转换为218个领先提供商的嵌入式视频,图像和丰富的文章预览.


小智 10

有许多策略可以确定URL的"主要"图像:

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

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


pin*_*x33 5

实际上没有任何东西被认为是网页中的“主”图像——HTML 或其他方式中没有任何东西可以区分这一点。更不用说您可能必须读取 CSS 中的所有图像(或者更确切地说是背景图像等)。但如果我必须这样做,我会这样做:

  1. 首先,我会决定合适的图像尺寸,最小尺寸为 400x400。(我不想选择任何旧图像,非常小的东西可能会放大得可怕)

  2. 然后我会迭代页面上的每个图像。2。

  3. 对于我遇到的每张图像,我都会检查它的大小3。如果它是 400x400(我的预定义尺寸)或更大,我会使用此图像。如果不是,我会检查它是否是迄今为止我发现的最大的图像,如果是,则将其信息存储在一边。

  4. 一旦我已经检查了预定数量的图像

    (对于参数,可以说 10,但肯定你可能会更高)我会使用我找到的最大图像(存储在侧面),因为我不想无限期地扫描页面寻找图像!

  • 大多数广告都是通过 iframe 加载的,因此它们不会成为页面的一部分。但如果这是一个问题,您可以忽略任何 IAB 标准尺寸。 (4认同)
  • 如果您只寻找最大的图片,您可能会得到一个大广告,例如排行榜 (728x90) 或摩天大楼 (120x600) (3认同)