如何获取不同网站的favicon默认图标
參考文章:
1、利用公共api提取任意網站favicon.ico圖標
如何讀取favicon 根據設置favicon的方式,就有2種讀取favicon的方法: A、默認直接讀取網站根目錄的favicon.ico文件。 B、如果不存在根目錄下的favicon.ico文件,就讀取頁面里favicon的聲明。 相比之下,獲取網站根目錄下的favicon.ico文件是最簡單快捷的,但如果網站根目錄下沒有該文件,就需要使用后臺程序讀取網頁的源代碼,非常的麻煩。 為了克服獲取favicon的麻煩,應運而生了一些獲取favicon的公共API,如: dnspod:http://statics.dnspod.cn/proxy_favicon/_/favicon?domain=url網址【特別推薦】 google:http://www.google.com/s2/favicons?domain=域名 getFavicon:http://www.getfavicon.org/?url=url地址 g.etfv.co:http://g.etfv.co/url地址 對網絡速度而言,dnspod是國內的,快速并且穩定。谷歌的穩定性值得信賴,但因為時常在墻外,而不得不放棄。第3個getFavicon是早期獲取favicon的網站,目前已經game over了。第4個也是國外的,也是經常在某些地區無法正常訪問。第1和第2個勝出一籌。 對于傳遞參數而言,dnspod和谷歌都是傳參域名,第3和第4個是傳參url。第3和第4個勝出一籌。 總體而言,4個都打成了平手。 如此境遇下,我開發了一款獲取網站favicon的公共API,只需要在傳入網址即可獲取圖片,目前服務器設置在香港,無國界的訪問,可以獲取任何網址的favicon。并且,圖片具有緩存30天的期限,第2次獲取同一個域名(含多級域名)的favicon會更加快速。使用方法也很簡單,如: 獲取百度的favicon http://*/?url=http://www.baidu.com 獲取谷歌的favicon http://*/?url=http://www.google.com 獲取facebook的favicon http://*/?url=http://facebook.com 獲取github的favicon http://*/?url=http://github.com 因流量以及濫用關系,現已經跳轉到dnspod服務器的favicon獲取方式,請使用該API的朋友盡快遷徙,該API將于今年年底徹底關閉。請使用http://statics.dnspod.cn/proxy_favicon/_/favicon?domain=網站地址 來獲取該網站的favicon。2、使用PHP獲取網站Favicon的方法
最近做一個Tab需要在網站名旁邊顯示網站的Favicon以提高顯示效果,如圖:
開始做的時候想到的是利用Google的方式來獲取,使用“http://www.google.com/s2/favicons?domain=網址”的方式可以直接獲得網站的Favicon圖標并以16*16大小圖片的形式顯示出來,這個方法簡單方便,但在有些網絡環境下卻會出現圖片無法顯示的問題(需要FQ),為了解決這個BUG我決定重新寫一個獲取Favicon的函數,使用自己的服務器以避免FQ。
實際效果請參見示例:
http://favicon.byi.pw/?url=blog.icewingcc.com
如果不想自己寫方法的話也可以使用我提供的接口,即“http://favicon.byi.pw/?url=網址”,網址可以帶http://前綴。
代碼(調用Google的方式,這種方式可以減少代碼量,并且速度也比較快):
| 1 | <?php |
| 2 | if(isset($_GET['url'])){ |
| 3 | ????$icon =?file_get_contents("http://www.google.com/s2/favicons?domain=" .?$_GET['url']); |
| 4 | ????if($icon){ |
| 5 | ????????header('Content-type:image/png'); |
| 6 | ????????echo $icon; |
| 7 | ????} |
| 8 | } |
沒錯,就這幾行代碼搞定一切 ^_^
這樣只要我們使用的服務器能夠訪問Google就可以正常顯示出Favicon,不再受網絡環境的影響。
復雜些的方法就是自己寫獲取函數,這里我只提供思路,就不再寫代碼了,如果有需要代碼可留言,定附上。
一般網站都會把自己的Favicon圖標以“favicon.ico”命名并放在網站根目錄下,如http://www.baidu.com/favicon.ico。所以可以直接使用PHP函數 file_get_contents()來獲取圖片內容,設置Header為PNG圖片,顯示出來即可。
如果根目錄沒有favicon.ico這個文件的話可以使用file_get_contents或CURL獲取網頁的內容,使用正則找到“ <link rel=”shortcut icon” href=”..” />”,href里面便是favicon的文件位置,直接獲取它的內容即可。
總結
以上是生活随笔為你收集整理的如何获取不同网站的favicon默认图标的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 尝试优化骨骼动画计算的意外收获——使用嵌
- 下一篇: Android数据库--Sqlciphe