问题
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:
- If there's an icon at
/favicon.ico
, use that. - 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 arel
of eithericon
orshortcut 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