Bonjour à tous,

Avec urllib, j'arrive à obtenir une page HTML en string.
Je veux en extraire un passage dont je sais qu'il est compris entre
</Title> et <tr><td align="right">toto_end</td>


J'ai fait une fonction qui me ramene la page en string,
et une autre que voici :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
def cherche_passage(page):
    print page
    print type(page)
    passage = re.search('</title>(.*)<tr><td align="right">toto_end</td>', page)
    print passage
    print type(passage)
    passage = passage.group(1)
    print passage
et là ça ne passe pas.
ça me print bien la page
le type c'est bien une string

Mais le résultat de re.search est "none" alors que mes bornes y figurent bien.
J'obtiens ceci:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
<html>
  <head>
... toute le page
</html>
<type 'str'>
None
<type 'NoneType'>
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 10, in cherche_synonyme
  File "<stdin>", line 8, in cherche_passage
AttributeError: 'NoneType' object has no attribute 'group'
>>>
Alors que si je teste avec :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
print (re.search('</title>(.*)<tr><td align="right">toto_end</td>', '</title>blabla<tr><td align="right">toto_end</td>').group(1)
j'ai bien

Est-ce qu'il y a une solution simple pour palier à ce problème?
Je pense que c'est un problème de retour à la ligne... Mais comment faire?

J'ai essayé d'ajouter :

de chaque côté de la variable page mais ça donne le même résultat...

J'ai bien trouvé ce que vous avez mis en ligne :

from HTMLParser import HTMLParser
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
class MyHTMLParser(HTMLParser):
 
    def handle_starttag(self, tag, attrs):
        print "Encountered the beginning of a %s tag" % tag
 
    def handle_endtag(self, tag):
        print "Encountered the end of a %s tag" % tag
Mais je n'y comprends rien...
Je ne sais pas utiliser les classes...


Je vous remercie d'avance, si vous pouvez me dépanner.