Desidero elencare siti web in evidenza sul mio sito Web e ho pensato che sarebbe stato bello onorare e utilizzare la loro favicon. Come posso ottenerlo dal dominio per un URL arbitrario in JSP o XSLT? Posso licenziare PHP o javascript, ma XSLT è la metodologia preferita.Come posso recuperare la favicon di un sito web?
risposta
Per ottenere la favicon di un sito web, è necessario caricare il codice HTML indice di ogni sito web in evidenza e verificare la presenza di una delle seguenti operazioni:
HTML:
<link rel="icon" type="image/vnd.microsoft.icon" href="http://example.com/image.ico">
<link rel="icon" type="image/png" href="http://example.com/image.png">
<link rel="icon" type="image/gif" href="http://example.com/image.gif">
XHTML:
<link rel="icon" type="image/vnd.microsoft.icon" href="/somepath/image.ico" />
<link rel="icon" type="image/png" href="/somepath/image.png" />
<link rel="icon" type="image/gif" href="/somepath/image.gif" />
Internet Explorer possono utilizzare un formato leggermente diverso:
<link rel="SHORTCUT ICON" href="http://www.example.com/myicon.ico" />
Si noti inoltre che poiché la maggior parte dei browser Web non richiede il collegamento HTML per recuperare una favicon, è necessario controllare anche per favicon.ico
nella radice del documento del sito Web, se non viene trovato nessuno dei riferimenti di collegamento sopra.
con PHP, è facile per ottenere il contenuto HTML di una pagina web utilizzando file_get_contents($url)
:
$url = 'http://www.exmaple.com';
$output = file_get_contents($url);
ECCELLENTE! Grazie per il dettaglio Daniel. Controllerò il tutorial PHP e ti farò sapere come funziona. – mobibob
si potrebbe anche semplicemente fare questo
http://s2.googleusercontent.com/s2/favicons?domain_url=http://domain.com
Ecco il mio tentativo di esso. Esso utilizza diverse strategie per risolvere i tanti casi possibili:
<?
/*
nws-favicon : Get site's favicon using various strategies
This script is part of NWS
https://github.com/xaccrocheur/nws/
*/
function CheckImageExists($imgUrl) {
if (@GetImageSize($imgUrl)) {
return true;
} else {
return false;
};
};
function getFavicon ($url) {
$fallback_favicon = "/var/www/favicon.ico";
// $fallback_favicon = "http://stackoverflow.com/favicon.ico";
$dom = new DOMDocument();
@$dom->loadHTML($url);
$links = $dom->getElementsByTagName('link');
$l = $links->length;
$favicon = "/favicon.ico";
for($i=0; $i<$l; $i++) {
$item = $links->item($i);
if(strcasecmp($item->getAttribute("rel"),"shortcut icon") === 0) {
$favicon = $item->getAttribute("href");
break;
}
}
$u = parse_url($url);
$subs = explode('.', $u['host']);
$domain = $subs[count($subs) -2].'.'.$subs[count($subs) -1];
$file = "http://".$domain."/favicon.ico";
$file_headers = @get_headers($file);
if($file_headers[0] == 'HTTP/1.1 404 Not Found' || $file_headers[0] == 'HTTP/1.1 404 NOT FOUND' || $file_headers[0] == 'HTTP/1.1 301 Moved Permanently') {
$fileContent = @file_get_contents("http://".$domain);
$dom = @DOMDocument::loadHTML($fileContent);
$xpath = new DOMXpath($dom);
$elements = $xpath->query("head/link//@href");
$hrefs = array();
foreach ($elements as $link) {
$hrefs[] = $link->value;
}
$found_favicon = array();
foreach ($hrefs as $key => $value) {
if(substr_count($value, 'favicon.ico') > 0) {
$found_favicon[] = $value;
$icon_key = $key;
}
}
$found_http = array();
foreach ($found_favicon as $key => $value) {
if(substr_count($value, 'http') > 0) {
$found_http[] = $value;
$favicon = $hrefs[$icon_key];
$method = "xpath";
} else {
$favicon = $domain.$hrefs[$icon_key];
if (substr($favicon, 0, 4) != 'http') {
$favicon = 'http://' . $favicon;
$method = "xpath+http";
}
}
}
if (isset($favicon)) {
if (!CheckImageExists($favicon)) {
$favicon = $fallback_favicon;
$method = "fallback";
}
} else {
$favicon = $fallback_favicon;
$method = "fallback";
}
} else {
$favicon = $file;
$method = "classic";
if (!CheckImageExists($file)) {
$favicon = $fallback_favicon;
$method = "fallback";
}
}
return $favicon;
}
?>
Per Firefox è possibile utilizzare https://addons.mozilla.org/en-US/firefox/addon/httpfox/. Carica un sito Web, quindi premi F10> ...> "Apri HttpFox nella propria finestra", quindi cerca "image/x-icon"; nella colonna a destra è l'URL.
Aprire il codice sorgente della pagina (fare clic con il pulsante destro del mouse Visualizza l'origine della pagina) trovare la riga sotto indicata, fare clic sul collegamento images/favicon.png.
<link rel="icon" href="images/favicon.png" type="image/png" sizes="16x16">
- 1. Come posso recuperare l'icona di un sito Web?
- 2. Impostazione di una singola favicon per l'intero sito web
- 3. Favicon per tutte le pagine del mio sito web
- 4. Come posso "chiudere" un sito Web solo la domenica
- 5. Posso modificare la locale su un sito Web Windows Azure?
- 6. Come posso sovrapporre immagini (png) all'interno di un sito web?
- 7. Posso cambiare una favicon giornalmente
- 8. Come posso riprodurre un file PLS da un sito Web?
- 9. Vaadin: Come cambiare la favicon?
- 10. Come creare un favicon in javascript?
- 11. Come posso recuperare la risposta HTML da un HttpModule?
- 12. Come posso implementare OCR su un sito Web utilizzando PHP?
- 13. Come posso incorporare un sito Web nella mia app
- 14. Come posso accedere a un sito Web con Python?
- 15. Come rilevare la lingua corrente di un Joomla! sito web?
- 16. Come posso utilizzare caratteri personalizzati su un sito Web?
- 17. Come ospitare un sito Web JSP su un server web?
- 18. Come posso far sì che un sito Web supporti la combinazione di tasti VIM?
- 19. PHP - ottenere favicon di un sito e la sua conversione al png, se necessario
- 20. Come scaricare un sito Web completo?
- 21. Come posso generare un sito con sito mvn: sito?
- 22. Come posso aggiungere un riferimento in un tipo di progetto di sito Web di Visual Studio?
- 23. Codifica di un sito Web in C?
- 24. Come incorporare l'audio in un sito Web?
- 25. Come distribuire/pubblicare un sito Web ASP.NET?
- 26. Misurazione su un sito web
- 27. Come creare un favicon di solo testo?
- 28. Come posso recuperare la condivisione in un GADT?
- 29. Come "Monkey Test" un sito web
- 30. Come posso ottenere la pagina padre da un controllo utente in un sito Web ASP.NET (non un'applicazione Web)
per ottenere una favicon si può usare questo: http://www.google.com/s2/favicons?domain=domain_name –