2010-08-06 8 views
2

J'ai un crawler qui télécharge des pages et essaye d'analyser le HTML. L'un des problèmes que j'ai rencontrés est de savoir comment déterminer correctement quel type de fichier est un fichier HTML.Meilleure façon de déterminer MimeType à partir d'une chaîne?

En ce moment je suis en utilisant

is = new ByteArrayInputStream(htmlResult.getBytes("UTF-8")); 
mimeType = URLConnection.guessContentTypeFromStream(is); 

mais il passe à côté des sites comme celui-ci: http://www.artdaily.org/index.asp?int_sec%3D11%26int_new%3D39415 en raison de l'espace supplémentaire entre la balise doc et la balise HTML dans la source.

Est-ce que quelqu'un sait un bon moyen de déterminer si une chaîne est HTML ou non? La recherche ou une autre balise ne fonctionnerait pas forcément à cause du texte incorporé dans les fichiers binaires que je pourrais rencontrer.

grâce

+0

Avez-vous regardé cette bibliothèque? http://sourceforge.net/projects/mime-util/ –

Répondre

1

Avez-vous un contrôle sur la connexion http que vous robot utilise? Alors que diriez-vous de vérifier l'en-tête de réponse HTTP "Content-type". C'est une façon de déterminer le type de contenu. Je viens de faire un test rapide de l'artdaily.com pour voir si l'en-tête de type de contenu a été envoyé. Et il y en a un qui a une valeur text/html

+0

beaucoup de fois le type de contenu n'est pas envoyé ou j'ai également trouvé qu'il est envoyé en tant que texte/html alors qu'en fait c'est un fichier vidéo ou pdf. Donc je ne peux pas me fier au type de contenu du serveur – James

Questions connexes