2010-06-02 5 views
2

(Je développe un site Web pour explorer le contenu d'autres sites Web dans ASP.NET.Je suis en mesure d'obtenir le contenu correctement, mais comment puis-je identifier .. utilisée en fonction de ce contenu Ex anglais, hindi, chinois, etc. japonaisComment identifier la langue du contenu du site Web comme l'anglais, le japonais, le chinois, etc

je code suivant

HttpWebRequest demande = (HttpWebRequest) HttpWebRequest.Create (TextBox1.Text). request.UserAgent = "A .NET Web Crawler";

WebResponse response = request.GetResponse(); 

    Stream stream = response.GetResponseStream(); 

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

Répondre

1

Eh bien, certaines pages Web contiennent un attribut "lang" ou "xml: lang" dans l'élément html. Par exemple:

<!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> 

Dans cet exemple, les attributs "lang" et "xml: lang" sont définis comme "en" (à savoir l'anglais). En outre, certains serveurs peuvent définir un en-tête "Content-Language" et vous pouvez vérifier cette valeur. (Bien que, pour être honnête je n'ai pas réellement vu un serveur qui fixe cette valeur).

Cependant, la valeur de ces attributs ou en-têtes peut être quelque chose et certains serveurs et pages Web n'indiquent même pas une langue du tout. Mais vous voudrez probablement rechercher des codes de langage communs tels que définis par ISO-639 et ISO-3166. Quant à l'implémentation de ceci en C#, je l'admets: je n'en ai pas vraiment la moindre idée. Mais je pense que la classe WebResponse a une propriété appelée Headers que vous voudrez peut-être regarder. Oh, et pour des langues comme l'hindi, je suis sûr qu'ils contiennent des caractères uniques à cette langue. Dans ce cas, vous pouvez rechercher votre chaîne htmlText pour l'un de ces caractères particuliers.

Il existe également une méthode simple vérifiant votre chaîne htmlText pour les mots communs à une langue particulière. Par exemple, si vous vouliez savoir si la page a été français, vous pouvez rechercher le mot « bonjour », etc.

0

Si vous parlez de "langage de programmation", alors vous ne pouvez pas. Vous pouvez trouver des indices, mais il n'y a aucun moyen de savoir avec certitude si une page a été produite avec asp ou php ou toute autre chose.

Si vous ne parlez pas de langage de programmation, mais plutôt anglais/espagnol/français etc, alors ignorez ma réponse (mais clarifiez votre question).

+0

Merci, je veux identifier si son anglais/chinois/japonais aiment ça. – AjayR

1

Vous trouverez peut-être quelque chose: http://www.google.com/uds/samples/language/detect.html

+0

+1 même si cela ne peut pas être fiable à 100% pour tout le contenu, il semble utile. L'API Google Traduction contient une bonne documentation sur la façon d'utiliser pleinement ce service (y compris l'énumération des langues prises en charge) - http://code.google.com/apis/language/translate/v1/reference.html –

0

En plus d'espérer la personne qui a créé la page Web ajoutée un identificateur de langue à la balise html ou spécifié dans une balise META, votre meilleure solution (et cela signifie après ces deux) est de vérifier le code de caractères Unicode pour un texte non anglais de la page Web.

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

Et vérifiez dans quel espace linguistique il se situe. Cependant, cela ne sera pas précis à 100%, car il y a chevauchement de caractères dans un certain nombre de langues (le japonais peut être déterminé avec précision en raison de l'utilisation de hiragana/katakana, mais une sélection aléatoire de caractères chinois pourrait être un section de kanji japonais sans hiragana ou katakana).Le moyen le plus rapide de le faire par programmation est de réduire le plus possible le nombre de jeux de caractères spécifiques à une langue et de rechercher ceux-ci en premier, puis de faire une recherche plus robuste sans les trois autres.

Questions connexes