2010-06-30 6 views
2

J'ai besoin d'analyser une page HTML avec windows-1251 charset (il est en russe).Quel parseur HTML choisir et pourquoi BeautifulSoup ne fonctionne pas?

Le problème est qu'il est l'application Web et je dois utiliser Python 2.4 sans possibilité d'installer des modules sur le serveur. La seule chose que j'ai essayé de faire était de demander à un administrateur pour installer le module lxml mais néanmoins il n'a pas été construit de la bonne manière sur 2.4 et tenter d'importer lxml.html échoue.

Maintenant, je suis en train de choisir entre BeautifulSoup et html5lib modules, mais je ne trouve pas d'exemples simples d'utilisation html5lib (j'ai juste besoin d'extraire du texte de la certains div élément avec décapage tous les autres tags à l'intérieur). À son tour, BeautifulSoup renvoie une erreur 'caractères indésirables dans la balise de début: u' \ u041f \ u0440 \ u043e \ u0434 \ u0430 \ u0436 \ u0430> » et toute tentative de décoder la page source de à Unicode ou tout autre charset ne l'a pas fait.

Qu'est-ce que je fais de mal? Ou quel parseur je devrais utiliser?

+0

Quelle version de BeautifulSoup utilisez-vous? Voir http://www.crummy.com/software/BeautifulSoup/3.1-problems.html, éviter '3.1. *' (Sauf si vous utilisez Python 3) et le bâton avec '3.0.x' (pour' x> = 8'). –

+0

J'utilise 3.0.8.1 à cause de Python 2.4. C'est le problème principal que la version de Python est si vieille. – Enchantner

+1

Votre message d'erreur semble avoir déjà des objets Unicode. Etes-vous sûr que vous lisez réellement les données de chaîne binaire encodées dans CP1251 et qu'elles ne sont pas converties en unicode quelque part dans la pile? –

Répondre

0

Cette question a une excellente réponse sur la façon de convertir en UTF-8:

Python: how to convert from Windows 1251 to Unicode?

J'aime la bibliothèque BeautifulSoup mais je ne suis pas familier avec les jeux de caractères bizarres. Si j'écrivais ceci, j'essaierais probablement de désinfecter l'entrée pour me faire entrer dans un pays Unicode où la plupart des bibliothèques sont capables de bien jouer.

Questions connexes