获得像Facebook链接刮板这样的图像尺寸

时间:2012-03-05 01:56:00

标签: python facebook image-processing

我正在实施自己的链接刮刀,尽可能地复制Facebook的技术(除非有人为我准备好了lib ...)。

根据SO上的许多答案,Facebook确定与共享链接关联的图像的过程涉及搜索几个已识别的元标记,然后,如果找不到这些元标记,则逐步浏览页面上的图像并返回列表适当大小的(至少50像素×50像素,最大宽高比为3:1,以及根据this answer的PNG,JPEG或GIF格式)

我的问题是,Facebook如何获取图像的大小信息?它是为每个共享链接加载所有图像并检查它们吗?有更有效的方法来做到这一点。 (我的后端是Python。)

(旁注:使用客户端而不是服务器端方法是否有意义?)

1 个答案:

答案 0 :(得分:0)

  

是否有更有效的方法来做到这一点。

最常见的“网络”图形格式 - JPEG,GIF,PNG - 包含有关宽度和宽度的信息。标题中的高度(或至少在第一个块中,对于PNG)。

因此,如果远程Web服务器正在接受范围请求,则可以仅请求图像资源的第一个 X 字节而不是整个事物来获取所需的信息。

(这也是Facebook的刮板对HTML页面所做的事情 - 你在调试器中看到请求被HTTP状态代码 206 Partial Content 回答是很常见的 - 这意味着Facebook表示他们'只对第一个 X (K)字节(对于元头中的元素)感兴趣,并且Web服务器只能给它们。