我正在使用Ruby on Rails v3.0.9,我想检索我为其设置链接的每个网站的favicon.ico
图像。
也就是说,如果在我的应用程序中我设置了http://www.facebook.com/
URL我想要检索Facebook'图标并在我的网页中使用\ insert。当然,我也想对所有其他网站也这样做。
如何以“自动”方式从网站检索favicon.ico
图标(使用“自动”我的意思是在网站中搜索图标并获取指向它 - 我认为没有,因为并非所有的网站都有一个名为'favicon.ico'的图标。我想以“自动”方式识别它?
P.S。:我想做的是像Facebook一样在Facebook页面中添加链接\ URL:它识别相关的网站徽标,然后将其附加到链接\ URL。
答案 0 :(得分:3)
http://getfavicon.appspot.com/非常适合获取favicon。只要给它网站的网址,你就会得到最爱的网站:
答案 1 :(得分:1)
通过两种方式找到了喜爱者。首先,有一个'hardcoded',传统名称为`http://example.com/favicon.ico'。
其次,HTML页面可以在<head>
部分中定义favicon,按<link rel="icon"...>
和其他一些部分。 (您可能需要阅读Wikipedia article about favicon)
因此,您的自动贩卖机可以获取指定网站的主页,解析它并检查是否有正确的<link>
标记,然后,作为后备,尝试“硬编码”favicon.ico
名称。
答案 2 :(得分:0)
我想我错过了你的问题......
你想从其他网站上获取一个网站图标并将其制作成你的网站吗?
如果这是您想要的,您可以直接从主页图标中获取并将其保存在公共文件夹中。
因此:www.facebook.com
favicon:www.facebook.com/favicon.ico
拍摄该图像并在公共文件夹中使用名称favicon保存
完成它应该足够了
如果你想要它dinamicaly你可以使用jquery,但如果你想要静态你可以把图像标签指向:[网站的根网址] /favicon.ico
像这样:<%= image_tag "#{website.url}/favicon.ico" %>
答案 3 :(得分:0)
你不能只使用一个指向favicon的src属性的常规img标签吗?
<img src="http://www.facebook.com/favicon.icon">
这假定浏览器将.ico文件识别为图像。帮助方法也可能适用于此。
答案 4 :(得分:0)
答案 5 :(得分:0)
使用javascript(jQuery),如下所示:http://jsfiddle.net/aX8T4/
答案 6 :(得分:0)
这是我的ruby方法,它将剥离URL的结尾,附加favicon,并生成图像标记。
def favicon_for(url)
matches = url.match(/[^:\/]\/(.*)/)
image_tag url.sub(matches[1], '') + '/favicon.ico', {width: '16px', height: '16px'}
end
答案 7 :(得分:0)
最近我写了一些类似的解决方案。
如果我们要查找收藏夹URL,则它不仅可以是.ico
文件,而且可以不在根目录中,我们应该解析目标站点html。
在Ruby on Rails中,我使用nokogiri gem进行html解析。
首先,我们解析所有itemprop
属性包含image
关键字的元标记。在目标网站使用https://schema.org/WebPage模板的情况下,有必要使用不仅仅是link
标签的更现代的技术。
如果找到它,则可以使用content
属性作为收藏夹URL。但是,为了确定URL,我们应该检查它是否确实存在。
如果找不到某些元标记,则搜索标准的link
标记,其中rel
属性包含icon
关键字。这是W3C标准情况(https://www.w3.org/2005/10/howto-favicon)
还有我的解决方案的一些代码:
require 'open-uri'
def site_icon_link site
icon_link = nil
url = nil
doc = Nokogiri::HTML(open(site))
metas = doc.css("meta[itemprop*=image]")
if metas.any?
url = metas.first.attributes['content'].value
else
links = doc.css("link[rel*=icon]")
if links.any?
url = links.first.attributes['href'].value
end
end
if url =~ URI::regexp
icon_link = url
elsif (site + url) =~ URI::regexp
icon_link = site + url
end
icon_link
end