Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

codage de caractere et urllib

6 réponses
Avatar
greg
Bonjour,

Je cherche a recuperer des informations sur les DSLAM de Free a partir d
une page web. Je suis sous windows avec Python 2.3.

Le probleme semble etre un probleme d encodage de caracteres mais je n
arrive a m en sortir.

#!python
# -*- coding: iso-8859-1 -*-

import re, urllib

source =
urllib.urlopen("http://francois04.free.fr/liste_dslam.php?ville=Lille").readlines()

for ligne in source:
if "liberte-3" in ligne:
entree = ligne


dslam = re.findall("""<a href='connex_dslam.php?dslam=liberte-3'
class='l1' TITLE='Connexions détaillées du dslam'>(.*?)</a>""",entree)
for elem in dslam:
print elem




Quand je recupere le code source HTML, j obtiens "Connexions du
UtaillUes" au lieu de "Connexions détaillées". Donc la regle de filtre ne
fonctionne pas.

Avez-vous un conseil a me fournir ou une petite idee ? Si il y a d autres
modules plus interessant pour faire ce travail ?
J ai essaye avec HTMLParser mais je n arrive pas a recuperer que le texte
entre les balises, bref j essaye plusieurs trucs.

Merci.

Greg

P.S : je tape sur un clavier americain.

6 réponses

Avatar
Michel Claveau - abstraction méta-galactique non triviale en fuite perpétuelle.
Bonsoir !

Avec windows, j'obtiens des "Connexions dxe9taillxe9es", ce qui du HTML
standard.
Normalement, il faudrait, ensuite, décoder le HTML, avant d'appliquer les
expressions régulières.

@-salutations
--
Michel Claveau
Avatar
greg
Michel Claveau - abstraction méta-galactique non triviale en fuite
perpétuelle. wrote:

Bonsoir !

Avec windows, j'obtiens des "Connexions dxe9taillxe9es", ce qui du HTML
standard.
Normalement, il faudrait, ensuite, décoder le HTML, avant d'appliquer les
expressions régulières.

@-salutations


Merci je vais essayer, je vous tiens au courant.

Greg

Avatar
Gilles Lenfant

Bonjour,

Je cherche a recuperer des informations sur les DSLAM de Free a partir d
une page web. Je suis sous windows avec Python 2.3.

Quand je recupere le code source HTML, j obtiens "Connexions du
UtaillUes" au lieu de "Connexions détaillées". Donc la regle de filtre ne
fonctionne pas.


L'éternel problème de charsets sous Windows. Ca n'a rien à voir avec
Python, ni le clavier américain. Si le charset de l'éditeur est
iso-8859-1 (ou cp1252 ce qui est presque la même chose), le charset de
la console Windows est CP850.

N'allez pas chercher pourquoi Win fonctionne comme ça, je n'en sais rien.

Par exemple, tu passes dans l'éditeur de textes avec lequel tu fais tes
scripts le fichier 'toto.txt'

### début toto.txt ###
Connexions détaillées
### fin toto.txt ###

Tu passes ensuite sous console et...

type toto.txt


Pour constater l'horreur.

Avatar
Michel Claveau - abstraction méta-galactique non triviale en fuite perpétuelle.
Bonsoir !

cp850, c'est pour l'Europe de l'ouest. Aux US, c'est la cp437.
Il est possible de changer le code-page, avec la commande MODE.

Exemple : MODE CON: CP SELECT52

MODE CON: tout court donne la config.


L'origine, c'est que c'était normalisé. A une époque, les imprimantes
"caractères" (à aiguilles, par exemple) était préconfigurées pour certaines
pages de codes (et je crois que c'est encore le cas).



La solution, c'est de taper :

MODE CON: CP SELECT52

Et hop, le tour est joué.




@-salutations
--
Michel Claveau
Avatar
Gilles Lenfant
Michel Claveau - abstraction méta-galactique non triviale en fuite

Bonsoir !

cp850, c'est pour l'Europe de l'ouest. Aux US, c'est la cp437.
Il est possible de changer le code-page, avec la commande MODE.

Exemple : MODE CON: CP SELECT52

MODE CON: tout court donne la config.


L'origine, c'est que c'était normalisé. A une époque, les imprimantes
"caractères" (à aiguilles, par exemple) était préconfigurées pour certaines
pages de codes (et je crois que c'est encore le cas).



La solution, c'est de taper :

MODE CON: CP SELECT52

Et hop, le tour est joué.


Merci du truc, le problème est que les commandes DOS standard retournent
toujours du CP850 comme au siècle dernier :-(

Il faut donc lancer les scripts Python en mode console avec un fichier
.BAT pour commuter les modes (lourdingue des fois le zindoz)

--
Gilles

Avatar
Michel Claveau - abstraction méta-galactique non triviale en fuite perpétuelle.
Bonjour !

Rien n'empêche de créer un raccourci, avec, une commande du genre :

%SystemRoot%system32cmd.exe /k C:1252.bat

Ici, le fichier batch s'appelle 1252.bat, et il se trouve dans C:


Ensuite, on peut copier un raccourci dans un icone (sur le bureau), dans le
menu démarrer, dans la barre de lancement rapide, etc.
C'est d'ailleurs ce que j'ai fait sur mon système.

Autre truc (important) : dans les propriétés de la fenêtre ainsi ouverte, il
faut parfois remplacer la police de caractères par "Lucida Handwriter".



Autre possibilité : au début du script Python, ajouter :
import os
ecran=os.popen('MODE CON: CP SELECT52').readlines()

(mais le truc de la police reste à étudier, pour ce cas aussi).




@-salutations
--
Michel Claveau