您如何从爬虫中的网页中选择最佳图像?

时间:2010-07-17 02:46:38

标签: html dom image web-crawler

如果您在互联网上获得了任何随机网页,并且只使用了html源代码。有什么方法可以为您提供最准确描述该网页的最准确图像?假设没有元标记或提示。

当你发布一个链接时,Facebook会做类似的事情,但是他们会给你选择n个图像,除非它上面有元标记,否则它们实际上不会选择一个。

4 个答案:

答案 0 :(得分:1)

这是猜测最好的东西,但是:

  • 忽略托管在其他域中的任何内容将消除大多数广告
  • 一旦你抓住了图像,就可以得到它们的大小;最大的可能就是使用它。
  • 位于<a>内并指向域根目录的图像可能是徽标。示例:此页面上的SO徽标位于<a href="/"></a>

已编辑添加:

大型网站确实为其图像使用辅助服务器。但是,您可能会制作一些简单的解析规则,这些规则可以获得80%的案例,并选择g-ecx.images-amazon.comstatic.ak.fbcdn.net作为非广告服务器。

答案 1 :(得分:1)

如果您找到og:image元属性,则可以非常安全地使用它,作为用于为Facebook链接提供图像的Open Graph规范的一部分。

格式示例:

<html xmlns:og="http://opengraphprotocol.org/schema/">
    <head>
        <title>The Rock (1996)</title>
        <meta property="og:image" content="http://ia.media-imdb.com/rock.jpg"/>
        ...
    </head>
    ...
</html>

答案 2 :(得分:1)

尝试分析页面的结构。大多数网页大致有标题,内容和页脚区域。内容区域最有可能包含与页面主题相关的图像,因此这就是您要查找的内容。

查找内容区域

大多数内容区域都是div元素,其中包含一个名为content的ID或类,因此这始终是一个很好的初步猜测。可能有内容元素的替代描述符,因此您需要进行一些研究以找到常见模式。

在大多数情况下,内容区域还会包含多个h1h2标题,因此这是另一个需要查找的指标。

找到页眉和页脚

另一种方法是识别页眉和页脚。标题通常包含对网站徽标的提示,例如图像,CSS类名称或指向站点根目录的链接。页脚最有可能包含版权声明等内容。

您还可以通过分析页面上的链接找到页眉和页脚。大多数内部链接都在页眉和页脚中,而内容具有相对更多的外向链接(如果有的话)。

一旦你有页眉和页脚,内容通常介于:)之间。

查找图像

一旦确定了内容区域,第一张图片通常是您最好的选择。但是,您应该忽略宽度和/或高度较小的图像,因为这些图像可能是装饰图像。

您还可以针对任何包含的CSS文件仔细检查图像,以确保您没有选择与页面设计相关的图像。

回到有根据的猜测

如果你无法可靠地猜出页面的内容区域,只需使用页面上最大的图像,如egrunin建议的那样。同样,您可以针对CSS文件检查此图像,以排除任何与设计相关的图像。

在后备案例中,您可以记录URL并查看这些页面以改进图像检测算法。

答案 3 :(得分:0)

好吧,我会尝试用class或id =“ logo ”或“ top ”来查找div / spans / h1。几乎每个页面的页面顶部都有其徽标。只需看看stackoverflow :)徽标。

我在我的抓取工具中这样做,它工作正常:)