Pergunta

Gostaria de saber se é possível obter o favicon de um site por um URL com JavaScript.

Por exemplo, eu tenho um URL http://www.bbc.co.uk/ e eu gostaria de obter o caminho para o favicon descrito em <link rel="icon" .../> meta tag - http://www.bbc.co.uk/favicon.ico.

Eu tenho muitos URLs, para que não carreguem todas as páginas e pesquisem link Tag, eu acho.

Alguma ideia ?

Foi útil?

Solução

Você poderia usar o YQL para isso

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

Esta consulta usada por Exibir FEED FAVICONS GREASENKEY SCRIPT.

Você pode escrever consultas no console YQL, mas é necessário fazer login (btw, usando consultas não):

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

É melhor que http://www.google.com/s2/favicons?domain=www.domain.com , no caso de Favicon existir, mas não localizado em domain.com/favicon.ico

Outras dicas

Aqui estão duas opções de trabalho, testei mais de 100 URLs e obtive resultados diferentes que cada opção. Observe que esta solução não é JS, mas JS pode não ser necessário.

<!-- 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' />

De repente, encontrei algo chamado Google Shared Stuff Isso retorna a imagem com o Favicon do site pelo HostName:

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

Mas o site da BBC, ele retorna Favicon um pouco pequeno. Comparar:

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

Após 30.000 a 40.000 testes, notei que você realmente encontra muitas situações diferentes contra.

O ponto de partida é claro que apenas para olhar para a etiqueta relacionada e buscar isso, mas ao longo do caminho, você encontrará mais e mais situações que terá que cobrir.

Caso alguém veja este tópico e tenta se aproximar de 100% de perfeição, enviei meu código (PHP) aqui: https://plugins.svn.wordpress.org/wp-favicons/trunk/includes/server/class-http.php. Isso faz parte de um plugin (GPL) WordPress que recupera os favoritos, mais ou menos a pedido na época, fora das limitações do Google padrão (como mencionado acima). O código encontra uma quantia substancialmente mais ícones que o código do Google. Mas também inclui o Google e outras pessoas como provedores de imagens para atingir mais iterações na tentativa de recuperar o ícone.

Ao ler o código, provavelmente verá algumas situações que encontrará por exemplo, URIs de dados base64, páginas redirecionando para 404 páginas ou redirecionando um gazilhão de vezes, recuperando códigos de status HTTP estranhos e precisando verificar todos os possíveis código de retorno HTTP para validação, o ícones que têm um tipo mímico errado, tags de atualização do lado do cliente, ícones na pasta raiz e nenhum no código HTML, etc ... etc ... etc ...

Se você subir um diretório, encontrará outras classes que então são mentiras para armazenar os ícones reais contra o URL deles (e é claro que você precisará descobrir quais "ramificações" usam o mesmo favicon e que não, e descobrirá se eles pertencem ao mesmo "proprietário" ou são peças realmente diferentes, mas no mesmo domínio.

Isenção de responsabilidade: eu mesmo construí este serviço, mas você pode tentar http://grabicon.com. É uma API muito simples para os favoritos que lida com redimensionamento e reformatação em tempo real. Ele também usa muito cache proativo para velocidade. Como a maioria dos outros serviços como este, você pode inserir isso diretamente no seu HTML e funciona muito bem. Ainda não tenho documentação on -line, mas aqui estão alguns exemplos usando o destino da web favorito de todos:

Obtenha o ícone no formato PNG:

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

Redimensione para 64 pixels Square:

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

Isso caça o ícone usando os vários métodos que as pessoas podem implementá -los e usa a versão de maior resolução disponível, já que os arquivos Favicon.ico realmente contêm um coleção de ícones. Ele usa essa versão para redimensionar à sua preferência, a menos que uma correspondência perfeita já esteja disponível.

Deixe -me saber o que vocês pensam e que outros recursos você pode gostar!

ATUALIZAR:

Grabicon está agora de volta à operação e não vai a lugar nenhum. Foi originalmente construído para um cliente que mais tarde decidiu não apoiá -lo. Mas agora está sob meus cuidados diretos, com velocidade muito melhor e capacidade de redimensionamento.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top