[c#] 웹 사이트의 파비콘은 어떻게 구할 수 있습니까?

간단한 질문 : 기본적으로 시스템 트레이에있는 즐겨 찾기에 불과한 작은 앱을 만들어 자주 사용하는 사이트 / 폴더 / 파일을 같은 위치에서 열 수 있습니다. 내 시스템에서 알려진 파일 유형에 대한 기본 아이콘을 가져 오는 것은 그리 복잡하지 않지만 웹 사이트에서 파비콘을 가져 오는 방법을 모릅니다. (예를 들어 주소 표시 줄에 회색-> 주황색 스택 아이콘이 있습니다)

내가 그것에 대해 어떻게 할 수 있는지 아는 사람이 있습니까?



답변

이 문제를 몇 가지 방법으로 해결해야합니다.

  1. favicon.ico도메인의 루트를 찾으십시오.

    www.domain.com/favicon.ico

  2. 속성이 있는 <link>태그 찾기rel="shortcut icon"

    <link rel="shortcut icon" href="https://stackoverflow.com/favicon.ico" />

  3. 속성이 있는 <link>태그 찾기rel="icon"

    <link rel="icon" href="https://stackoverflow.com/favicon.png" />

후자의 두 가지는 일반적으로 더 높은 품질의 이미지를 생성합니다.


이러한 장치는 일반적으로 브라우저가 필요로하는 것보다 더 큰 아이콘을 장치에 가지고 있기 때문에 모든 기본을 커버하기 위해 더 높은 품질의 이미지를 생성 할 수있는 장치 별 아이콘 파일이 있습니다.

<link rel="apple-touch-icon" href="images/touch.png" />

<link rel="apple-touch-icon-precomposed" href="images/touch.png" />


아이콘이 무엇인지 신경 쓰지 않고 아이콘을 다운로드하려면 http://www.google.com/s2/favicons 와 같은 유틸리티를 사용하여 모든 작업을 수행 할 수 있습니다 .

var client = new System.Net.WebClient();

client.DownloadFile(
    @"http://www.google.com/s2/favicons?domain=stackoverflow.com",
    "stackoverflow.com.ico");


답변

업데이트 된 2020

2020 년부터 사용할 수있는 세 가지 서비스는 다음과 같습니다.

<img height="16" width="16" src='https://icons.duckduckgo.com/ip3/www.google.com.ico' />

<img height="16" width="16" src='http://www.google.com/s2/favicons?domain=www.google.com' />

<img height="16" width="16" src='https://api.statvoo.com/favicon/?url=google.com' />


답변

Google S2 변환기를 사용할 수 있습니다.

http://www.google.com/s2/favicons?domain=google.com

출처 : http://www.labnol.org/internet/get-favicon-image-of-websites-with-google/4404/


답변

가장 먼저 찾아야 할 것은 사이트 루트의 /favicon.ico입니다. WebClient.DownloadFile ()과 같은 것이 잘 작동합니다. 그러나 메타 데이터에서 아이콘을 설정할 수도 있습니다.

<link rel="shortcut icon"
   href="http://sstatic.net/stackoverflow/img/favicon.ico">

대체 아이콘을 사용할 수 있습니다. “터치”는 더 크고 더 높은 해상도 인 경향이 있습니다. 예를 들면 다음과 같습니다.

<link rel="apple-touch-icon"
   href="http://sstatic.net/stackoverflow/img/apple-touch-icon.png">

따라서 HTML Agility Pack 또는 XmlDocument (xhtml 인 경우)에서이를 구문 분석하고 WebClient.DownloadFile ()을 사용합니다.

다음은 민첩성 팩을 통해이를 얻기 위해 사용한 몇 가지 코드입니다.

var favicon = "/favicon.ico";
var el=root.SelectSingleNode("/html/head/link[@rel='shortcut icon' and @href]");
if (el != null) favicon = el.Attributes["href"].Value;

아이콘은 귀하의 것이 아니라 그들의 것입니다.


답변

각 페이지에 필요한 요청 수를 최소화하는 것이 좋습니다. 따라서 여러 아이콘이 필요한 경우 yandex는 하나의 쿼리에서 파비콘 스프라이트를 수행 할 수 있습니다. 다음은 http://favicon.yandex.net/favicon/google.com/stackoverflow.com/yandex.net/ 의 예입니다.


답변

웹 사이트의 HTML에서 파비콘 URL을 얻을 수 있습니다.

다음은 favicon 태그입니다.

<link rel="icon" type="image/png" href="/someimage.png" />

여기서 정규식을 사용해야합니다. 태그가 없으면 사이트 루트 디렉터리에서 “favicon.ico”를 찾습니다. 아무것도 발견되지 않으면 사이트에 파비콘이없는 것입니다.


답변

프로그래밍없이 할 수 있습니다 . 웹 사이트를 열고 마우스 오른쪽 버튼을 클릭 한 다음 “소스보기” 를 선택 하여 해당 사이트의 HTML 코드를 엽니 다. 그런 다음 텍스트 편집기에서 “favicon”을 검색 하면 다음과 같은 항목으로 이동합니다.

<link rel="icon" href='/SOMERELATIVEPATH/favicon.ico' type="image/x-icon" />

문자열을 가져 와서 href웹 사이트의 기본 URL에 추가합니다 (라고 가정 해 보겠습니다 "http://WEBSITE/").

http://WEBSITE/SOMERELATIVEPATH/favicon.ico

파비콘의 절대 경로입니다. 이 방법으로 찾지 못한 경우 URL이 다음과 같은 경우 루트에있을 수도 있습니다.http://WEBSITE/favicon.ico .

결정한 URL을 다음 코드에 삽입합니다.

<html>
  <head>
   <title>Capture Favicon</title>
  </head>
  <body>
    <a href='http://WEBSITE/SOMERELATIVEPATH/favicon.ico' alt="Favicon"/>Favicon</a>
  </body>
</html>

이 HTML 코드를 로컬 (예 : 데스크탑)에 저장 GetFavicon.html한 다음 두 번 클릭하여 엽니 다. Favicon 이라는 링크 만 표시됩니다 . 이 링크를 마우스 오른쪽 버튼으로 클릭하고 “다른 이름으로 대상 저장 …” 을 선택 하여 로컬 PC에 Favicon을 저장하면됩니다.