7
votes

Comment récupérer des favicons de site Web?

J'utilise Ruby sur Rails V3.0.9 et je voudrais récupérer le Favicon.ico Image de chaque site Web pour lequel j'ai défini un lien.

C'est-à-dire que, si dans mon application, je définit le http://www.facebook.com/ URL Je souhaite récupérer l'icône Facebook et utilisez \ Insert que dans mes pages Web. Bien sûr, je voudrais faire cela aussi pour tous les autres sites Web.

Comment puis-je récupérer favicon.ico icônes de sites Web dans un mode " automatique " (avec "Automatique" Je veux dire rechercher un Favicon sur un site Web et obtenez le lien à cela - je pense que non, car tous les sites Web ont un favicon nommé exactement «Favicon.ico». Je voudrais reconnaître cela de manière «automatique»)?

P.s.: Ce que je voudrais faire, c'est quelque chose comme Facebook fait quand ajouter un lien \ URL dans votre page Facebook: elle reconnaît le logo du site Web associé, puis ajoute que sur le lien \ URL.


2 commentaires

Juste une pensée, es-tu sûr qu'il n'y a pas de problème de copyright avec ça?


@ Johnny5 - Je ne sais pas cela à coup sûr, mais je n'utilise pas de favicons comme logo de site Web (je ne fais que insérer celles dans mes pages Web) et je pense que les favicons sont publics.


8 Réponses :


1
votes

Je pense avoir manqué votre question ...

Vous voulez attraper un Favicon d'un autre site et faire le vôtre?

Si c'est ce que vous voulez, vous pouvez vous rendre directement à partir de l'icône Home et l'enregistrer dans votre dossier public.

Ainsi: www.facebook.com Favicon: www.facebook.com/favicon.ico

Prenez cette image et économisez avec le nom Favicon dans votre dossier public

fait, il devrait suffire


Si vous le souhaitez Dinamicaly, vous pouvez utiliser JQuery, mais si vous voulez que STATIC, vous pouvez mettre une balise d'image pointant sur: [URL racine du site Web] /Favicon.ico

Comme ceci: <% = image_tag "# {website.url} /favicon.ico"%>


3 commentaires

Nicos Karalis Question: "Vous voulez attraper un Favicon d'un autre site et en faire le tien?" - Réponse: "Non, je voudrais faire référence à ces Favicons afin de créer une étiquette d'image HTML".


Voulez-vous dire construire une image de mosaïque?


Non, je veux utiliser ce Favicon Juste pour mettre cela près d'un nom de site Web. Par exemple ('[FV]' représente le FACEBOOK Favicon): [FV] Facebook.



0
votes

Vous ne pouvez pas simplement utiliser une étiquette IMG régulière avec l'attribut SRC pointant vers le Favicon? XXX

Ceci suppose qu'un navigateur reconnaît un fichier .ico comme une image. Les méthodes aidées travailleraient probablement avec cela aussi.


1 commentaires

Je pense que pas parce que tous les sites Web n'ont pas un favicon nommé exactement "Favicon.ico". Je voudrais reconnaître cela de manière "automatique".



0
votes

Vous pouvez le faire facilement avec pismo gemme.

Exemple rapide Pour obtenir l'URL du Favicon de Facebook: P>

Pismo::Document.new('http://www.facebook.com/').favicon


2 commentaires

Je voudrais mettre en œuvre ma propre solution \ solution aussi simple que possible.


Pismo n'est plus maintenu, et il n'autorise pas redirect , voir github.com/peterc/pismo/issues/15



0
votes

avec javascript (jQuery), comme ceci: http://jsfiddle.net/ax8t4/


2 commentaires

Peut être le meilleur moyen d'utiliser jQuery pour atteindre ces choses?


Malheureusement, cela ne fonctionne que si le Favicon est situé dans la racine de domaine. Certains sites Web font quelque chose comme ça si:



1
votes

Les favicons sont trouvés de deux manières. Premièrement, il y a un nom traditionnel de «codé» de `http://example.com/favicon.ico».

Deuxièmement, les pages HTML peuvent définir le Favicon dans leurs sections , par et quelques autres. (vous voudrez peut-être lire le Article Wikipedia sur Favicon )

Donc, votre automate peut aller chercher la page principale du site Web donné, analyser et vérifier s'il existe des balises appropriées , puis effectuez la touche "Code" dur " > Favicon.ico Nom.


0 commentaires

3
votes

http://getfavicon.appot.com/ fonctionne bien pour récupérer des favicons. Il suffit de lui donner l'URL pour le site et vous obtiendrez le Favicon:

http://g.etfv.co/http://www. google.com


2 commentaires

Merci. C'est la seule réponse qui ne suppose pas que l'icône est située sur "www.rooturl.com/favicon.ico"


Depuis que Getfavicon a fermé, voici une solution alternative: https://www.google .COM / S2 / Favicions? Domaine = Stackoverflow.com



0
votes

Voici ma méthode de rubis, qui éliminera la fin d'une URL, appendez le Favicon et produira une étiquette d'image.

  def favicon_for(url)
    matches = url.match(/[^:\/]\/(.*)/)
    image_tag url.sub(matches[1], '') + '/favicon.ico', {width: '16px', height: '16px'}
  end


1 commentaires

Clever, mais il est très courant que les sites Web dévient de ce modèle, il n'est donc pas utilisable.



2
votes

Récemment, j'ai écrit une solution similaire.

Si nous voulons trouver Favicon URL, cela peut être non seulement .ico code> et ne peut pas être à la racine, nous devrions analyser le site cible HTML. P>

dans Ruby On Rails, j'ai utilisé Nokogiri GEM pour analyse HTML. D'abord, nous analysons toutes les balises méta où itemProp code> attribut contient image code> mot-clé. Il est nécessaire dans des situations où le site ciblé utilisé https://schema.org/webpage modèle, cette technologie plus moderne que simplement lien code> tag. p>

Si nous l'avons trouvé, nous pouvons utiliser l'attribut Content code> comme URL Favicon. Mais nous devrions le vérifier pour une existence vraiment de l'URL, juste pour être sûr. P>

Si nous ne pouvons pas trouver des balises méta, puis nous recherchons des balises code> lien standard code>, où rel code> attribut contient icône code> mot-clé. Il s'agit de la situation standard W3C ( https://www.w3.org/2005/10/ HOWTO-FAVICON ) P>

et un code de ma solution: P>

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


0 commentaires