web-dev-qa-db-ja.com

JSでウェブサイトのファビコンを取得

JavaScriptを含むURLでウェブサイトのファビコンを取得できるかどうか疑問に思っています。

たとえば、http://www.bbc.co.uk/というURLがあり、<link rel="icon" .../>メタタグ-http://www.bbc.co.uk/favicon.icoで説明されているファビコンへのパスを取得したいと考えています。

私は多くのURLを持っているので、すべてのページをロードしてlinkタグを検索するべきではないと思います。

何か案は ?

37
hsz

あなたはそのためにYQLを使うことができます

http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20html%20where%20url%3D"http://bbc.co.uk/"and%20xpath%3D "/html/head/link [@ rel%3D'icon ']%20 |%20/html/head/link [@ rel%3D'ICON']%20 |%20/html/head/link [@ rel% 3D'shortcut%20icon ']%20 |%20/html/head/link [@ rel%3D'SHORTCUT%20ICON'] "&format = json&callback = grab

このクエリは Display Favicons Greasemonkeyスクリプトの表示 で使用されます。

YQLコンソールでクエリを記述できますが、ログインする必要があります(ところで、クエリを使用する必要はありません)。

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

Faviconは存在するがdomain.com/favicon.icoにない場合は、http://www.google.com/s2/favicons?domain=www.domain.comよりも優れています。

16
NVI

以下は2つの動作するオプションです。100以上のURLをテストしたところ、オプションごとに異なる結果が得られました。このソリューションは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' />
51
Blowsie

突然、Google Shared Stuffホスト名でWebサイトのファビコンを含む画像を返します。

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

しかしfot BBCサイトはfaviconを少し小さく返します。比較:

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

22
hsz

30.000から40.000のテストの後に、私はあなたが実際に対処しなければならない多くの異なる状況に遭遇することに気づきました。

開始点はもちろん、どこかでrelタグを見てこれを取得することですが、その過程で、カバーしなければならない状況がますます見つかります。

誰かがこのスレッドを見て100%の完成度に近づこうとする場合、(PHP)コードをここにアップロードしました: https://plugins.svn.wordpress.org/wp-favicons/trunk/includes/ server/class-http.php 。これは、(GPL)の一部ですWordPressプラグインを取得するプラグインで、リクエストに応じて、標準のGoogleの制限(上記のとおり)を超えています。コードは、アイコンは、Googleのコードよりも多くなりますが、アイコンの取得を試行するための反復をさらに短縮するための画像プロバイダーとして、googleなども含まれます。

コードを読むと、おそらくあなたが遭遇するいくつかの状況を目にするでしょう。 base64データURI、404ページにリダイレクトするページ、または膨大な回数リダイレクトするページ、奇妙なHTTPステータスコードを取得し、すべての可能なHTTP戻りコードの有効性、MIMEタイプが間違っているアイコン自体、クライアント側の更新タグ、ルートフォルダーとhtmlコードなどなし... etc ...など...

ディレクトリを上に行くと、URLに対して実際のアイコンを格納するためのメンテである他のクラスが見つかります(もちろん、同じ "ファビコンを使用している"ブランチ "と使用していない"ブランチ "を見つける必要があります)。同じ「所有者」に属している、または本当に異なる部分であるが同じドメインに属している。

1
edelwater

免責事項:このサービスは自分で作成したものですが、 http://grabicon.com を試すことができます。それはその場でサイズ変更や再フォーマットを処理するファビコン用の非常にシンプルなAPIです。また、速度を上げるために多くのプロアクティブキャッシングを使用します。このような他のほとんどのサービスと同様に、これをHTMLに直接挿入できます。まだオンラインドキュメントはありませんが、ここに、みんなのお気に入りのWeb宛先を使用した例をいくつか示します。

アイコンをPNG形式で取得します。

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

64ピクセルの正方形にサイズ変更:

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

Favicon.icoファイルには実際にはアイコンのコレクションが含まれているため、ユーザーがアイコンを実装できるさまざまな方法を使用してアイコンを探し出し、使用可能な最高解像度のバージョンを使用します。完全に一致するものがない場合を除き、そのバージョンを使用して好みのサイズに変更します。

みなさんの感想や、その他の機能について教えてください。

UPDATE:

Grabiconは現在稼働中ですが、どこにも行きません。もともとは、後でサポートしないことを決定した顧客のために作成されました。しかし、今は私の直接の管理下にあり、速度とサイズ変更機能がはるかに優れています。

0
Jaime Bellmyer