2010-06-02 29 views
2

(我正在開發一個網站來抓取ASP.NET中的其他網站內容,我能夠正確獲取內容,但是如何識別哪種語言是。基於該內容用於離英語,印地文,中國,日本等如何識別網站的內容語言,如英文,日文,中文等

我用下面的代碼

HttpWebRequest的請求=(HttpWebRequest的)HttpWebRequest.Create(TextBox1.Text); request.UserAgent =「.NET Web Crawler」;

WebResponse response = request.GetResponse(); 

    Stream stream = response.GetResponseStream(); 

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

回答

1

那麼,一些網頁在html元素中包含「lang」或「xml: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> 

在這個例子中的屬性「郎」和「XML:郎」被設置爲「連接」(即英語)。此外,某些服務器可能會設置「Content-Language」標題,您可以檢查該值。 (雖然,說實話我實際上並沒有看到一個設置這個值的服務器)。

但是,這些屬性或標頭的值可能是任何東西,並且一些服務器和網頁甚至不會說明一種語言。但是您可能需要搜索ISO-639ISO-3166定義的通用語言代碼。至於在C#中實現這個,我會承認它:我沒有太多線索。但我認爲WebResponse類有一個名爲Headers的屬性,您可能需要查看它。

呵呵,對於像印地語這樣的語言,我敢肯定他們包含那種語言所特有的字符。在這種情況下,您可以搜索您的htmlText字符串中的任何這些特定字符。

還有一個簡單的方法檢查您的htmlText字符串的特定語言通用的單詞。例如,如果你想知道是否頁面是法國,你可以搜索單詞「卓悅」等

0

如果你在談論「編程語言」,那麼你不能。您可以找到線索,但無法確切知道一個頁面是使用asp或php或其他方式生成的。

如果你不是在談論編程語言,而是英語/西班牙語/法語等,然後忽略我的答案(但澄清你的問題)。

+0

謝謝,我要識別是否其英文/中國/ Japensese這樣。 – AjayR 2010-06-04 13:14:21

1

你可能會發現這裏的東西:從希望誰創造了添加的網頁的人 http://www.google.com/uds/samples/language/detect.html

+0

+1儘管這不可能是100%可靠的所有內容,它確實有用。谷歌翻譯API對如何充分利用這項服務(包括支持的語言的枚舉)良好的文檔 - http://code.google.com/apis/language/translate/v1/reference.html – 2011-01-21 07:04:05

0

除了一個語言標識符到html標籤或在meta標籤中指定它,你的最佳解決方案(也就是說在這兩個標籤之後)是從網頁檢查一些非英文文本的unicode字符代碼。

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

並檢查它落入的語言空間。

然而,這不會是100%準確的,因爲在多種語言中有字符重疊(由於平假名/片假名的使用,日語可以相當準確地確定,但隨機選擇的漢字可能只是一個沒有平假名或片假名的日本漢字部分)。

以編程方式做到這一點,最快捷的方法是有可能縮小爲許多語言特定的字符集,您可以和檢查這些第一,然後做一個更強大的搜索沒有任何其他的三種。

相關問題