Récupération de données htmlparser et condition
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:
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:
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 :)