如果您在互联网上获得了任何随机网页,并且只使用了html源代码。有什么方法可以为您提供最准确描述该网页的最准确图像?假设没有元标记或提示。
当你发布一个链接时,Facebook会做类似的事情,但是他们会给你选择n个图像,除非它上面有元标记,否则它们实际上不会选择一个。
答案 0 :(得分:1)
这是猜测最好的东西,但是:
<a>
内并指向域根目录的图像可能是徽标。示例:此页面上的SO徽标位于<a href="/"></a>
。已编辑添加:
大型网站确实为其图像使用辅助服务器。但是,您可能会制作一些简单的解析规则,这些规则可以获得80%的案例,并选择g-ecx.images-amazon.com
和static.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或类,因此这始终是一个很好的初步猜测。可能有内容元素的替代描述符,因此您需要进行一些研究以找到常见模式。
在大多数情况下,内容区域还会包含多个h1
或h2
标题,因此这是另一个需要查找的指标。
另一种方法是识别页眉和页脚。标题通常包含对网站徽标的提示,例如图像,CSS类名称或指向站点根目录的链接。页脚最有可能包含版权声明等内容。
您还可以通过分析页面上的链接找到页眉和页脚。大多数内部链接都在页眉和页脚中,而内容具有相对更多的外向链接(如果有的话)。
一旦你有页眉和页脚,内容通常介于:)之间。
一旦确定了内容区域,第一张图片通常是您最好的选择。但是,您应该忽略宽度和/或高度较小的图像,因为这些图像可能是装饰图像。
您还可以针对任何包含的CSS文件仔细检查图像,以确保您没有选择与页面设计相关的图像。
如果你无法可靠地猜出页面的内容区域,只需使用页面上最大的图像,如egrunin建议的那样。同样,您可以针对CSS文件检查此图像,以排除任何与设计相关的图像。
在后备案例中,您可以记录URL并查看这些页面以改进图像检测算法。
答案 3 :(得分:0)
好吧,我会尝试用class或id =“ logo ”或“ top ”来查找div / spans / h1。几乎每个页面的页面顶部都有其徽标。只需看看stackoverflow :)徽标。
我在我的抓取工具中这样做,它工作正常:)