Как получить значки сайта? - PullRequest
6 голосов
/ 25 августа 2011

Я использую Ruby on Rails v3.0.9, и я хотел бы получить изображение favicon.ico каждого веб-сайта, для которого я установил ссылку.

То есть, если в моем приложении я установилhttp://www.facebook.com/ URL Я хотел бы получить значок Facebook и использовать \ вставить его на своих веб-страницах.Конечно, я хотел бы сделать это и для всех других веб-сайтов.

Как я могу получить favicon.ico иконки с веб-сайтов " автоматическим " способом (с "автоматическим" Iхотите найти значок сайта на веб-сайте и получить ссылку на него - я думаю, что нет, потому что не на всех веб-сайтах есть значок с именем «favicon.ico». Я хотел бы признать это «автоматически»)?

PS: Я хотел бы сделать что-то вроде того, что Facebook делает, когда добавляет ссылку \ URL на вашу страницу Facebook: он распознает логотип соответствующего веб-сайта и затем добавляет его к ссылке \ URL.

Ответы [ 8 ]

3 голосов
/ 06 ноября 2011

http://getfavicon.appspot.com/ отлично подходит для получения значков. Просто дайте ему URL для сайта, и вы получите фавикон обратно:

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

1 голос
/ 25 августа 2011

Фавиконы можно найти двумя способами.Во-первых, существует «жестко закодированное», традиционное имя `http://example.com/favicon.ico'.

. Во-вторых, HTML-страницы могут определять значок в своих <head> разделах, <link rel="icon"...> и некоторых других. (Вы можете прочитать статью Википедии о favicon )

Итак, ваш автомат может получить главную страницу данного веб-сайта, проанализировать ее и проверить, есть липравильные теги <link>, а затем, в качестве запасного варианта, попробуйте использовать «жестко закодированное» имя favicon.ico.

0 голосов
/ 05 марта 2019

Недавно я написал похожее решение.

Если мы хотим найти favicon url, который может быть не только файлом .ico, но не корневым, мы должны проанализировать html целевого сайта.

В Ruby on Rails я использовал nokogiri gem для разбора html. Сначала мы анализируем все метатеги, где атрибут itemprop содержит ключевое слово image. В ситуациях, когда на целевом сайте используется шаблон https://schema.org/WebPage, необходимо использовать более современные технологии, чем просто тег link.

Если мы нашли его, мы можем использовать атрибут content в качестве URL-адреса favicon. Но мы должны проверить это на наличие 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
0 голосов
/ 18 марта 2013

Вот мой метод ruby, который удаляет конец URL-адреса, добавляет значок и создает тег изображения.

  def favicon_for(url)
    matches = url.match(/[^:\/]\/(.*)/)
    image_tag url.sub(matches[1], '') + '/favicon.ico', {width: '16px', height: '16px'}
  end
0 голосов
/ 25 августа 2011

С помощью javascript (jQuery), например: http://jsfiddle.net/aX8T4/

0 голосов
/ 25 августа 2011

Вы можете сделать это легко с pismo gem.

Быстрый пример получения URL-адреса избранного в Facebook:

Pismo::Document.new('http://www.facebook.com/').favicon
0 голосов
/ 25 августа 2011

Разве вы не можете просто использовать обычный тег img с атрибутом src, указывающим на значок?

<img src="http://www.facebook.com/favicon.icon">

Предполагается, что браузер распознает файл .ico как изображение. Вспомогательные методы, вероятно, будут работать с этим тоже.

0 голосов
/ 25 августа 2011

Я думаю, что я пропустил ваш вопрос ...

Вы хотите получить значок сайта с другого сайта и сделать его своим?

Если это то, что вы хотите, вы можете получить непосредственно издома и сохраните его в общей папке.

, таким образом: www.facebook.com favicon: www.facebook.com/favicon.ico

возьмите это изображение и сохраните его с именем favicon в вашей общей папке

готово, этого должно быть достаточно


если вы хотите динамически, вы можете использовать jquery, но если вы хотите использовать статический, вы можете поместить тег изображения, указывающий на: [корневой URL сайта] / favicon.ico

вот так: <%= image_tag "#{website.url}/favicon.ico" %>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...