[Python] Comment enlever les script?
dje-dje
Messages postés
10417
Date d'inscription
mardi 6 janvier 2004
Statut
Modérateur
Dernière intervention
28 janvier 2011
-
7 mai 2004 à 15:43
dje-dje Messages postés 10417 Date d'inscription mardi 6 janvier 2004 Statut Modérateur Dernière intervention 28 janvier 2011 -
dje-dje Messages postés 10417 Date d'inscription mardi 6 janvier 2004 Statut Modérateur Dernière intervention 28 janvier 2011 -
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
- Comment enlever les pubs sur youtube gratuitement - Accueil - Streaming
- Citizen code python - Accueil - Outils
- Comment enlever une page sur word - Guide
- Mas script - Accueil - Windows
4 réponses
JSS
Messages postés
3745
Date d'inscription
jeudi 22 avril 2004
Statut
Contributeur
Dernière intervention
17 décembre 2004
32
7 mai 2004 à 15:57
7 mai 2004 à 15:57
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
sebsauvage
Messages postés
32893
Date d'inscription
mercredi 29 août 2001
Statut
Modérateur
Dernière intervention
21 octobre 2019
15 662
7 mai 2004 à 16:07
7 mai 2004 à 16:07
Il y a une solution bourrin, mais qui marche très bien:
htmlCode.Replace("<script ","<noscript ")
:-)
htmlCode.Replace("<script ","<noscript ")
:-)
dje-dje
Messages postés
10417
Date d'inscription
mardi 6 janvier 2004
Statut
Modérateur
Dernière intervention
28 janvier 2011
758
7 mai 2004 à 16:18
7 mai 2004 à 16:18
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
sebsauvage
Messages postés
32893
Date d'inscription
mercredi 29 août 2001
Statut
Modérateur
Dernière intervention
21 octobre 2019
15 662
7 mai 2004 à 16:20
7 mai 2004 à 16:20
Ah pardon !
htmlCode.Replace("<script ","<noscript ").Replace("</script>","</noscript>")
htmlCode.Replace("<script ","<noscript ").Replace("</script>","</noscript>")
dje-dje
Messages postés
10417
Date d'inscription
mardi 6 janvier 2004
Statut
Modérateur
Dernière intervention
28 janvier 2011
758
>
sebsauvage
Messages postés
32893
Date d'inscription
mercredi 29 août 2001
Statut
Modérateur
Dernière intervention
21 octobre 2019
7 mai 2004 à 16:23
7 mai 2004 à 16:23
C'est dans quel module htmlCode?
Merci
a+
dje-dje
Il y a 10 types de personne dans le monde,
ceux qui comprennent le binaire et les autres
Merci
a+
dje-dje
Il y a 10 types de personne dans le monde,
ceux qui comprennent le binaire et les autres
sebsauvage
Messages postés
32893
Date d'inscription
mercredi 29 août 2001
Statut
Modérateur
Dernière intervention
21 octobre 2019
15 662
>
dje-dje
Messages postés
10417
Date d'inscription
mardi 6 janvier 2004
Statut
Modérateur
Dernière intervention
28 janvier 2011
7 mai 2004 à 16:32
7 mai 2004 à 16:32
ah pardon... htmlCode est juste ta chaîne contenant le code HTML.
dje-dje
Messages postés
10417
Date d'inscription
mardi 6 janvier 2004
Statut
Modérateur
Dernière intervention
28 janvier 2011
758
>
dje-dje
Messages postés
10417
Date d'inscription
mardi 6 janvier 2004
Statut
Modérateur
Dernière intervention
28 janvier 2011
7 mai 2004 à 16:34
7 mai 2004 à 16:34
Ok, mais replace ca sort d'ou? (moi je fais un regexp.sub )
a+
dje-dje
Il y a 10 types de personne dans le monde,
ceux qui comprennent le binaire et les autres
a+
dje-dje
Il y a 10 types de personne dans le monde,
ceux qui comprennent le binaire et les autres
sebsauvage
Messages postés
32893
Date d'inscription
mercredi 29 août 2001
Statut
Modérateur
Dernière intervention
21 octobre 2019
15 662
>
dje-dje
Messages postés
10417
Date d'inscription
mardi 6 janvier 2004
Statut
Modérateur
Dernière intervention
28 janvier 2011
7 mai 2004 à 16:55
7 mai 2004 à 16:55
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. :-)
dje-dje
Messages postés
10417
Date d'inscription
mardi 6 janvier 2004
Statut
Modérateur
Dernière intervention
28 janvier 2011
758
7 mai 2004 à 16:26
7 mai 2004 à 16:26
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
sebsauvage
Messages postés
32893
Date d'inscription
mercredi 29 août 2001
Statut
Modérateur
Dernière intervention
21 octobre 2019
15 662
7 mai 2004 à 16:33
7 mai 2004 à 16:33
.Replace("<script ","<noscript ").Replace("</script>","</noscript>").Replace("<script/>","<noscript/>")
ça ne marcherait pas ?
dje-dje
Messages postés
10417
Date d'inscription
mardi 6 janvier 2004
Statut
Modérateur
Dernière intervention
28 janvier 2011
758
>
sebsauvage
Messages postés
32893
Date d'inscription
mercredi 29 août 2001
Statut
Modérateur
Dernière intervention
21 octobre 2019
7 mai 2004 à 17:00
7 mai 2004 à 17:00
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
sebsauvage
Messages postés
32893
Date d'inscription
mercredi 29 août 2001
Statut
Modérateur
Dernière intervention
21 octobre 2019
15 662
>
dje-dje
Messages postés
10417
Date d'inscription
mardi 6 janvier 2004
Statut
Modérateur
Dernière intervention
28 janvier 2011
7 mai 2004 à 17:06
7 mai 2004 à 17:06
oups !
Juste un truc: l'antislash est un caractère spécial:
Au lieu d'écrire .Replace("<script\>","<noscript\>")
tu dois écrire .Replace("<script\\>","<noscript\\>")
ou bien .Replace(r"<script\>",r"<noscript\>")
Juste un truc: l'antislash est un caractère spécial:
Au lieu d'écrire .Replace("<script\>","<noscript\>")
tu dois écrire .Replace("<script\\>","<noscript\\>")
ou bien .Replace(r"<script\>",r"<noscript\>")
dje-dje
Messages postés
10417
Date d'inscription
mardi 6 janvier 2004
Statut
Modérateur
Dernière intervention
28 janvier 2011
758
>
dje-dje
Messages postés
10417
Date d'inscription
mardi 6 janvier 2004
Statut
Modérateur
Dernière intervention
28 janvier 2011
7 mai 2004 à 17:07
7 mai 2004 à 17:07
Bah! non...
Avec Replace, j'ai testé le slash et l'anti et il remplace tel que.
tandis qu'avec les regexp, ca ne passait pas...
a+
dje-dje
Il y a 10 types de personne dans le monde,
ceux qui comprennent le binaire et les autres
Avec Replace, j'ai testé le slash et l'anti et il remplace tel que.
tandis qu'avec les regexp, ca ne passait pas...
a+
dje-dje
Il y a 10 types de personne dans le monde,
ceux qui comprennent le binaire et les autres