Bonjour à tous,
je débute en python, et j'essaie de parser une page web, pour utiliser certaines données, en gros le code (html) que je veux exploiter ressemble à ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
 
 
	<table id="Article"style="table-layout: fixed; width: 96%;" border="1" cellspacing="1" cellpadding="1" align="center">
		<tr>
			<td style="word-wrap: break-word; TEXT-ALIGN: justify" >
				<table border="1" border="1" >
					<tr>
						<td id="celPublication"><img src="http://www.bpe.europresse.com/Docviewer.aspx?DocName=dpm_small.gif" border="0"><br></td>
						<td id="celPdf" align="left"></td>
					</tr>
				</table>
				<span class="DocPublicationName">La Dépêche du Midi</span>
				<br>
				<span class="DocPublicationName">Aveyron Decazeville; </span>
				<span class="DocPublicationName">Aveyron Rodez</span>
				<br><span class="DocHeader">locale, </span>
				<span class="DocHeader">vendredi </span>
				<span class="DocHeader">7 février 2014</span>
				<span class="DocHeader">, p. 25, 22</span>
				<br><br>
				<span class="TitreArticleVisu">[Centre universitaire Jean-François-Champollion...]</span><br><br>
				Centre universitaire Jean-François-Champollion<p xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:scripts="urn:scripts.this"></p>
				Samedi 8 février, de 10 heures à 17 heures<p xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:scripts="urn:scripts.this"></p>
				Forum des formations Sciences et techniques des activités physiques et sportives. Licence STAPS; licence pro gestion de la condition
				 physique des intervenants en situations hostiles, gestion et développement des organisations, des services sportifs et de loisirs 
				 (deux parcours) (salle 301).<p xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:scripts="urn:scripts.this"></p>Arts, lettres et langues. 
				 Licences langues étrangères appliquées, lettres modernes, anglais, espagnol (salle 303).<p></p>Droit, économie, gestion. Licences administration
				  économique et sociale, droit; licence pro management et développement durable des PMO (salle 303). rogramme détaillé sur 
				  <a href="http://www.univ-tlse3.fr" class="occurlemail" target="_blank" xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:scripts="urn:scripts.this">
					  www.univ-tlse3.fr</a><p></p><b>
						  <i>© 2014 La Dépêche du Midi. Tous droits réservés.</i>
						  </b><p></p>Numéro de document : news·20140207·DPM·26196317<br><br><br>
				<table bgcolor="#ffffff" align="center" width="100%" border="1" cellpadding="2" cellspacing="0" style="table-layout: fixed;">
					<tr> 
						<td align="center"><img src="http://www.bpe.europresse.com/images/\logos\logo_public_vert.gif" alt="Certificat PubliC" border="1" vspace="3" hspace="5" align="absmiddle">news·20140207·DPM·26196317</td>
					</tr>
					<tr> 
						<td align="center">Ce certificat est émis à </td>
					</tr>
					<tr>
						<td align="center">Date d'émission : <b>2014-02-17</b></td>
					</tr>
					<tr>
						<td align="center" class="txtCertificat">Le présent document est protÃ</td>
					</tr>
				</table>
			</td>
		</tr>
	</table><p><br><br>
J'ai besoin de récupérer tout le contenu se trouvant dans un certain type de "table" que j'identifie par id="article", mais pas tout. en fait j'ai besoin d'affecter à des variables certains le contenue de certains class et à une autre le texte brut (en gros tout ce qui n'est pas dans un class, un lien ou un second table).

J'ai réussi à faire ça :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
from HTMLParser import HTMLParser
import wx.lib.sized_controls as sc
import wx.lib.filebrowsebutton as filebrowse
import os
import codecs
import sys
import re
import wx
Contenu=""
class MyHTMLParser(HTMLParser):
	def handle_data(self, data):
		self.Contenu=data
		print self.Contenu
	def handle_starttag(self, tag, attrs):
		self.Articles=[]
		if tag == 'table':
			for name, value in attrs:
				if name == 'id' and value == 'Article' :
					print 'Article'
					#print 'aaaa'+self.Contenu
 
 
 
print "ok" 
htmldir = '/home/lulu/Bureau/Lerass/Stage/python/Presse/presse'
fichierDest=open ("corpusPress.txt","w")
files = os.listdir(htmldir)					
 
 
for f in files :
    f= os.path.join(htmldir, f)
 
    with codecs.open(f, 'r', 'utf8') as infile :
        content = infile.read()
        p = MyHTMLParser()
        p.feed(content)
le handle_data fonctionne, puisque mon print m'écrit TOUT le contenu du id="article" (sans les balises).
Mon problème est que je n'arrive pas à garder ce contenu (si je le met en dernière ligne du parser, ou ailleur dans le code il est vide),
je n'arrive pas non plus à faire un handle_data que si le id ="article"...

en gros, je voudrais un code qui enregistre dans une variable (Toto par exemple) le contenu des <span class="DocPublicationName">, et dans une autre (Tata par exemple) le texte de l'article (se trouve après le dernier span et avant le <table bgcolor="#ffffff" align="center" width="100%" border="1" cellpadding="2" cellspacing="0" style="table-layout: fixed;">)...
et bien sûr récupérer tout ça en fin de code
quelqu'un pourrait-il m'aiguiller ????
MErci d'avance