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

BeatifulSoup et 'n'

1 réponse
Avatar
Pierre Maurette
Bonsoir,

Je creuse un peu autour de BeautifulSoup. C'est semble-t-il bien foutu,
en mode HTML ça prend en général les "décisions" que j'attends. C'est
pour ça que je suis étonné de constater qu'un document normalement
formaté (sauts de ligne) génère une foule de '\n'. Pour être précis,
des NavigableString réduites à '\n'. Qui mettent le caca, par exemple
nextSibling tombe dans ces sauts de ligne, en dehors de ce que je
croyais être la logique de l'outil.
Je nettoie avec:
[_x.extract() for _x in soup.findAll(text='\n')]
C'est long, un peu plus long que la construction initiale de la soupe.

Y a-t-il un moyen de faire ça en même temps que la création, ou par
exemple de positionner un paramètre pour que les fonctions telles que
nextSibling fassent abstraction des sauts de ligne de formatage ? Je
n'ai rien vu à ce sujet dans la documentation.

Bonne soirée...

--
Pierre Maurette

1 réponse

Avatar
Pierre Maurette
Pierre Maurette, le 23/06/2008 a écrit :
Bonsoir,

Je creuse un peu autour de BeautifulSoup. C'est semble-t-il bien foutu, en
mode HTML ça prend en général les "décisions" que j'attends. C'est pour ça
que je suis étonné de constater qu'un document normalement formaté (sauts de
ligne) génère une foule de 'n'. Pour être précis, des NavigableString
réduites à 'n'. Qui mettent le caca, par exemple nextSibling tombe dans ces
sauts de ligne, en dehors de ce que je croyais être la logique de l'outil.
Je nettoie avec:
[_x.extract() for _x in soup.findAll(text='n')]
C'est long, un peu plus long que la construction initiale de la soupe.

Y a-t-il un moyen de faire ça en même temps que la création, ou par exemple
de positionner un paramètre pour que les fonctions telles que nextSibling
fassent abstraction des sauts de ligne de formatage ? Je n'ai rien vu à ce
sujet dans la documentation.

Bonne soirée...



J'ai trouvé ça hier:
<URL:http://groups.google.com/group/beautifulsoup/browse_thread/thread/177b1d80e6d76cee>
J'ai utilisé bs_preprocess(), c'est impeccable, et plus satisfaisant
que mon extract() en tout cas. Et plus rapide.
Ça peut peut-être se faire avec Tidy, je n'ai pas trouvé, mais je
découvrais cet outil. Et peu importe, tant que je n'ai pas d'autre
avantage à une passe Tidy.
Les compresseurs HTML (compacteurs) doivent également faire ça.

Mais je laisse la question ouverte, car je partage l'opinion du jeune
et sémillant Clemens Hermann, à savoir qu'il doit y avoir plus simple.

--
Pierre Maurette