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.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
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.
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.