获取JS的网站favicon

我想知道是否有可能通过JavaScript的URL来获取网站的图标。

例如,我有一个URL http://www.bbc.co.uk/ ,我想要获得path的<link rel="icon" .../>描述在<link rel="icon" .../>元标记 – http://www.bbc.co.uk/favicon.ico

我有很多url,所以不应该加载每一个页面,并寻找我认为的link标签。

有任何想法吗 ?

你可以使用YQL

  http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20html%20where%20url%3D"http://bbc.co.uk/"and%20xpath%3D” / HTML /头/链路[@相对%3D'icon ']%20 |%20 / HTML /头/链路[@相对%3D'ICON']%20 |%20 / HTML /头/链路[@相对% 3D'shortcut%20icon ']%20 |%20 / HTML /头/链路[@相对%3D'SHORTCUT%20ICON']“&格式= JSON&callback=抢 

Display Feed Favicons Greasemonkey脚本使用的查询。

您可以在YQL控制台中编写查询,但需要login(顺便说一句,使用查询不):

  http://developer.yahoo.com/yql/console/#h=select%20*%20from%20html%20where%20url%3D%22http%3A//bbc.co.uk/%22and%20xpath%3D% 22 / HTML /头/链接%5B @相对%3D%27icon%27%5D%20%7C%20 / HTML /头/链接%5B @相对%3D%27ICON%27%5D%20%7C%20 / HTML /头/链接%5B @相对%3D%27shortcut%20icon%27%5D%20%7C%20 / HTML /头/链接%5B @相对%3D%27SHORTCUT%20ICON%27%5D%22 

这比http://www.google.com/s2/favicons?domain=www.domain.com ,万一favicon存在,但不位于domain.com/favicon.ico

这里有2个工作选项,我testing了100个url,并得到不同的结果,每个选项。 请注意,这个解决scheme不是JS ,但JS可能没有必要。

 <!-- Free --> <img height="16" width="16" src='http://www.google.com/s2/favicons?domain=www.edocuments.co.uk' /> <!-- Paid --> <img height="16" width="16" src='http://grabicon.com/edocuments.co.uk' /> 

突然之间,我发现一个名为Google Shared Stuff ,通过主机名返回图片和网站图标:

 http://www.google.com/s2/favicons?domain=www.domain.com 

但是BBC网站它返回favicon有点小。 比较:

http://www.google.com/s2/favicons?domain=www.bbc.co.uk
http://www.bbc.co.uk/favicon.ico

在30.000到40.000次testing之后,我注意到你真的遇到了许多不同的情况,这些情况必须要处理。

起点是当然只是看看那里的rel标签,并获取这个,但一路上你会发现越来越多的情况,你将不得不覆盖。

如果有人会看到这个线程,并试图接近100%完美我上传我的(PHP)代码在这里: https : //plugins.svn.wordpress.org/wp-favicons/trunk/includes/server/class- http.php 。 这是一个(GPL)WordPress插件的一部分,检索Favicons,或多或less要求当时,超出标准的谷歌(如上所述)的限制。 代码发现大量更多的图标,谷歌的代码。 但也包括谷歌和其他作为图像提供商捷径进一步迭代试图检索图标。

当你通读代码时,你可能会看到一些你会遇到的情况,比如base64数据uris,页面redirect到404页面或redirect一个巨大的次数,检索奇怪的HTTP状态代码,并且必须检查每个可能的HTTP返回代码的有效性,图标本身有一个错误的MIMEtypes,客户端刷新标签,在根文件夹中的图标和HTML代码中没有,等等…等等…

如果你上了一个目录,你会发现其他的类,然后存储实际的图标对他们的url(当然,你将需要找出哪些“分支机构”使用相同的图标,哪些不是,并找出是否他们属于同一个“所有者”,或者是真正不同的部分,但在同一个领域。

免责声明:我自己build立了这个服务,但你可以尝试http://grabicon.com 。 这是一个非常简单的API的favicons处理大小和dynamic重新格式化。 它也使用了很多主动caching来提高速度。 像大多数其他这样的服务,你可以直接插入到你的HTML,它的效果很好。 我还没有在线文档,但这里有一些使用每个人最喜欢的网站的例子:

以PNG格式获取图标:

 http://grabicon.com/icon?domain=microsoft.com 

调整为64像素的平方:

http://grabicon.com/icon?domain=microsoft.com&size=64

这使用人们可以实现它们的各种方法追捕图标,并使用可用的最高分辨率版本,因为favicon.ico文件实际上包含一组图标。 它使用该版本来调整您的偏好,除非完美的匹配已经可用。

让我知道你们的想法,以及你可能喜欢的其他function!

更新:

Grabicon现在已经开始运作了,而且它不会去任何地方。 它最初是为后来决定不支持它的客户而build立的。 但是现在它正在我的直接照顾下,具有更好的速度和调整能力。