2010-06-02 5 views
2

(나는 ASP.NET에서 다른 웹 사이트 콘텐츠를 크롤링하기 위해 웹 사이트를 개발하고 있습니다. 콘텐츠를 올바르게 가져올 수는 있지만 어떻게 어떤 언어를 사용할 수 있습니까? .. 그 내용에 따라 사용되는 일본어 예 영어, 힌디어, 중국어, 등영어, 일본어, 중국어 등 웹 사이트의 콘텐츠 언어를 식별하는 방법

위해 나는 다음 코드를 사용

의 HttpWebRequest 요청 = (HttpWebRequest를) HttpWebRequest.Create (TextBox1.Text). request.UserAgent을 = ".NET 웹 크롤러"

WebResponse response = request.GetResponse(); 

    Stream stream = response.GetResponseStream(); 

    StreamReader reader = new StreamReader(stream); 
    string htmlText = reader.ReadToEnd(); 

답변

1

글쎄, 일부 웹 페이지는 html 요소에 "lang"또는 "xml : lang"속성을 포함합니다. "LANG XML" "EN"(즉, 영어)로 설정되는 속성 "LANG"및이 예에서

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
<head> 
<title></title> 
<meta http-equiv="content-type" content="text/html;charset=utf-8" /> 
</head> 
<body> 

</body> 
</html> 

예 :. 또한 일부 서버는 "Content-Language"헤더를 설정할 수 있으며 그 값을 확인할 수 있습니다. (솔직히 말해서 나는이 값을 설정하는 서버를 실제로 보지 못했다.).

그러나 이러한 속성이나 헤더의 값은 무엇이든 될 수 있으며 일부 서버와 웹 페이지는 언어를 전혀 언급하지 않습니다. 그러나 ISO-639ISO-3166에 정의 된대로 공용 언어 코드를 검색하려고합니다.

C#에서이 구현에 관해서는 인정할 것입니다. 단서가별로 없습니다. 하지만 WebResponse 클래스에는보고 싶은 것일 수도있는 Headers이라는 속성이 있다고 생각합니다.

아, 힌디어와 같은 언어의 경우 해당 언어에 고유 한 문자가 포함되어 있다고 확신합니다. 어떤 경우에는 htmlText 문자열에서 이러한 특정 문자를 검색 할 수 있습니다.

또한 특정 언어에 공통된 단어를 htmlText 문자열에서 확인하는 간단한 방법이 있습니다. 예를 들어, 페이지가 프랑스어 하였다는 등의 단어 "봉쥬르"를 검색 할 수 있는지 알고 싶어하는 경우

당신은 여기서 뭔가 찾을 수 있습니다
0

"프로그래밍 언어"에 대해 이야기하고 있다면, 그렇게 할 수 없습니다. 단서를 찾을 수는 있지만 페이지가 ASP 나 PHP 등으로 생성되었는지 여부를 알 수있는 방법은 없습니다.

프로그래밍 언어에 대해 말하는 것이 아니라 영어/스페인어/프랑스어 등의 언어를 사용하는 경우 내 대답을 무시하고 질문을 명확히하십시오.

+0

감사합니다. 영어/중국어/일본어가 그런지 여부를 확인하고 싶습니다. – AjayR

1

: 추가 된 웹 페이지를 만든 사람을 기대에서 http://www.google.com/uds/samples/language/detect.html

+0

+1 모든 콘텐츠에 대해 100 % 신뢰할 수는 없지만 유용하다고 보입니다. Google 번역 API에는이 서비스를 최대한 활용하는 방법 (지원되는 언어의 열거 형 포함) - http://code.google.com/apis/language/translate/v1/reference.html에 대한 훌륭한 문서가 있습니다. –

0

를 제외하고 html 태그에 언어 식별자를 지정하거나 메타 태그에 지정하면 가장 좋은 해결책 (그 두 가지를 의미 함)은 웹 페이지에서 영어 이외의 텍스트에 대한 유니 코드 문자 코드를 확인하는 것입니다.

string text = "あの"; 
foreach (char c in text) 
{ 
    Console.WriteLine("U+{1:x4}", (int)c); 
} 

그리고 어떤 언어 공간인지 확인하십시오.

여러 언어로 문자가 겹치므로 100 % 정확하지는 않습니다. (히라가나/가타카나로 인해 일본어가 상당히 정확하게 결정될 수 있지만 무작위로 한자를 선택할 수는 있습니다. 히라가나 또는 카타카나가없는 일본어 한자 섹션).

프로그래밍 방식으로이 작업을 수행하는 가장 빠른 방법은 가능한 한 많은 언어 별 문자 집합을 좁히고 그 문자 집합을 먼저 확인한 다음 다른 세 가지 중 하나에서 실패한보다 강력한 검색을 수행하는 것입니다.

관련 문제