[Python] Comment enlever les script?
dje-dje
Messages postés
10442
Statut
Modérateur
-
dje-dje Messages postés 10442 Statut Modérateur -
dje-dje Messages postés 10442 Statut Modérateur -
Bonjour,
je suis toujours dans mon parser HTML et je voudrais qu'il élimine TOUS les script qu'il rencontre. La raison principal étant que l'un deux est:
<script language="javascript>
Document.write("<Script language=VB ...")
</script>
Et que l'un des script de ce genre me genere un HTML mal formé.(Donc que je ne peux pas parser avec HTMLParser) Puis-je l'épurer avec une regexp.
J'ai essayé avec '<script.*?script.*?> mais ca ne va pas, car il prend la balise script généré dans le javascript avec celle ouvrant le javascript(J'ai donc la balise fermante du javascript qui est seule...)
a+
dje-dje
Il y a 10 types de personne dans le monde,
ceux qui comprennent le binaire et les autres
je suis toujours dans mon parser HTML et je voudrais qu'il élimine TOUS les script qu'il rencontre. La raison principal étant que l'un deux est:
<script language="javascript>
Document.write("<Script language=VB ...")
</script>
Et que l'un des script de ce genre me genere un HTML mal formé.(Donc que je ne peux pas parser avec HTMLParser) Puis-je l'épurer avec une regexp.
J'ai essayé avec '<script.*?script.*?> mais ca ne va pas, car il prend la balise script généré dans le javascript avec celle ouvrant le javascript(J'ai donc la balise fermante du javascript qui est seule...)
a+
dje-dje
Il y a 10 types de personne dans le monde,
ceux qui comprennent le binaire et les autres
A voir également:
- [Python] Comment enlever les script?
- Script vidéo youtube - Guide
- Enlever pub youtube - Accueil - Streaming
- Citizen code python - Accueil - Outils
- Mas script - Accueil - Windows
- Comment enlever une page sur word - Guide
4 réponses
Bonjour ou Bonsoir,
Je connais pas le langage python mais je connais les regexp donc je vais t'apporter ma reponse (peut etre que ca pourra t'aider).
essaye avec : "<Script.*?</Script>.
Autre idée : dans les regexp il prend la plus petite expression pouvant integrer ton expression il te faudra peut etre adapte ton utilisation au cas du javascript et du coup faire :
1 eliminer les balises javascript
2 eliminer les balises scripts
(En 2 passes du coup).
Je pense pas que j'ai ete tres clair mais bon ...
J'attends ton feedback.
++
JSS
Je connais pas le langage python mais je connais les regexp donc je vais t'apporter ma reponse (peut etre que ca pourra t'aider).
essaye avec : "<Script.*?</Script>.
Autre idée : dans les regexp il prend la plus petite expression pouvant integrer ton expression il te faudra peut etre adapte ton utilisation au cas du javascript et du coup faire :
1 eliminer les balises javascript
2 eliminer les balises scripts
(En 2 passes du coup).
Je pense pas que j'ai ete tres clair mais bon ...
J'attends ton feedback.
++
JSS
Il y a une solution bourrin, mais qui marche très bien:
htmlCode.Replace("<script ","<noscript ")
:-)
htmlCode.Replace("<script ","<noscript ")
:-)
D'abord merci pour votre aide!
Alors:
- la solution de seb me génère d'autres erreurs: le script vb n'est pas ouvert et fermé dans le même javascript; j'ai reverifié ce code que je dois parser et il sort un Document.write('</script/>'). Balise sur laquelle le Parser se plante... (J'ai vais peut-etre faire un tour d'épuration pour virer celle-là et refaire un test). Sinon, sur un exemple de HTML propre cela aurait convenu. (replace c'est dasn quelle lib?)
- JSS: comme je l'ai mis plus haut, je vais etre obligé de faire une deuxième "épuration" comme tu me suggérais de la faire. Je vais aussi tester ta méthode.
a+
dje-dje
Il y a 10 types de personne dans le monde,
ceux qui comprennent le binaire et les autres
Alors:
- la solution de seb me génère d'autres erreurs: le script vb n'est pas ouvert et fermé dans le même javascript; j'ai reverifié ce code que je dois parser et il sort un Document.write('</script/>'). Balise sur laquelle le Parser se plante... (J'ai vais peut-etre faire un tour d'épuration pour virer celle-là et refaire un test). Sinon, sur un exemple de HTML propre cela aurait convenu. (replace c'est dasn quelle lib?)
- JSS: comme je l'ai mis plus haut, je vais etre obligé de faire une deuxième "épuration" comme tu me suggérais de la faire. Je vais aussi tester ta méthode.
a+
dje-dje
Il y a 10 types de personne dans le monde,
ceux qui comprennent le binaire et les autres
http://docs.python.org/lib/module-string.html
Le string.replace est beaucoup plus rapide que les expressions régulières. :-)
Le string.replace est beaucoup plus rapide que les expressions régulières. :-)
En fait, le cochon qui génère ce code ferme ses script avec <script\> (un anti-slash) et même avec la regexp qui va bien, il ne me substitue pas le code :-(
regexp = re.compile('<script\>',re.IGNORECASE)
test = <script\>
regexp.sub('<script>',test)
-> il me laisse <script\>
a+
dje-dje
Il y a 10 types de personne dans le monde,
ceux qui comprennent le binaire et les autres
regexp = re.compile('<script\>',re.IGNORECASE)
test = <script\>
regexp.sub('<script>',test)
-> il me laisse <script\>
a+
dje-dje
Il y a 10 types de personne dans le monde,
ceux qui comprennent le binaire et les autres
Replace me remplace bien les \ que me laissait le traitement des regexp. (Désolé de t'avoir embeté, mais mon help(replace) m'envoyait boulé, alors je pensais qu'un autre module devait etre installé)
J'ai de quoi joué maintenant! :-)
Merci
a+
dje-dje
Il y a 10 types de personne dans le monde,
ceux qui comprennent le binaire et les autres
J'ai de quoi joué maintenant! :-)
Merci
a+
dje-dje
Il y a 10 types de personne dans le monde,
ceux qui comprennent le binaire et les autres