Any way to grab a logo icon from website URL, programmatically?

為{幸葍}努か 提交于 2020-01-22 15:07:20

问题


I am in the process of creating an activity where I will show the list of website visited with its logo and its alias name chosen by user.

e.g.

  • Recent Websites Visited

    logo1 website1/alias name

    logo2 website2/alias name

    .

    . so no

The question is, (Ref. attached image) How to get website logo displayed on left side of http://?


回答1:


It's called a favicon, and all you have to do is:

  1. If there's an icon at /favicon.ico, use that.
  2. Otherwise, get the content of the page, and extract the location from <link rel="shortcut icon" href="URL goes here" />. You’ll need to use an HTML parser and find the <link> with a rel of either icon or shortcut icon.



回答2:


Use this website:

https://besticon-demo.herokuapp.com/allicons.json?url=www.stackoverflow.com

It will find all logos for a website in multiple sizes and return a nice json string with meta data including the url to the icon. You simply replace www.stackoverflow.com with your domain.

The site also has a gui for entering in websites manually if you prefer:

https://besticon-demo.herokuapp.com/

Here is a sample string returned from querying for the stack overflow website:

{
   "url":"www.stackoverflow.com",
   "icons":[
      {
         "url":"http://stackoverflow.com/apple-touch-icon.png",
         "width":158,
         "height":158,
         "format":"png",
         "bytes":3445,
         "error":null,
         "sha1sum":"c78bd457575a3221c6b3d0d17ffb00ffc63d7cd0"
      },
      {
         "url":"http://cdn.sstatic.net/Sites/stackoverflow/img/favicon.ico?v=4f32ecc8f43d",
         "width":32,
         "height":32,
         "format":"ico",
         "bytes":5430,
         "error":null,
         "sha1sum":"4f32ecc8f43d0986b9c6ce9f37999e86c0b829ef"
      },
      {
         "url":"http://stackoverflow.com/favicon.ico",
         "width":32,
         "height":32,
         "format":"ico",
         "bytes":5430,
         "error":null,
         "sha1sum":"4f32ecc8f43d0986b9c6ce9f37999e86c0b829ef"
      }
   ]
}



回答3:


Try using this code:

imageview1.setImageBitmap(webview1.getFavicon());



回答4:


This method can be used to get Favicon Icon bitmap

 private Bitmap fetchFavicon(Uri uri) {
        final Uri iconUri = uri.buildUpon().path("favicon.ico").build();
        Log.i(TAG, "Fetching favicon from: " + iconUri);

        InputStream is = null;
        BufferedInputStream bis = null;
        try
        {
            URLConnection conn = new URL(iconUri.toString()).openConnection();
            conn.connect();
            is = conn.getInputStream();
            bis = new BufferedInputStream(is, 8192);
            return BitmapFactory.decodeStream(bis);
        } catch (IOException e) {
            Log.w(TAG, "Failed to fetch favicon from " + iconUri, e);
            return null;
        }
    }



回答5:


Here's a python library which tries to infer the logo image from a URL:

https://github.com/dcollien/urlimage

it parses the HTML at the url, and tries a whole bunch of things including:

  • meta tag with itemprop="image" or property="image"
  • meta tag with property="og:image:secure_url" or property="og:image"
  • meta tag with name="twitter:image"
  • meta tag for Microsoft tiles, with: name="msapplication-wide310x150logo", name="msapplication-square310x310logo", name="msapplication-square150x150logo", name="msapplication-square70x70logo"
  • link tag with rel="apple-touch-icon"
  • link tag with rel="icon"
  • tries out "{scheme}://{domain}/favicon.ico" to see if it exists
  • otherwise pulls out the first img tag (next to an h1)


来源:https://stackoverflow.com/questions/10456663/any-way-to-grab-a-logo-icon-from-website-url-programmatically

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!