[Résolut] Récupérer le contenu d'une colonne au format html

Récupérer le contenu d'une colonne au format html [Résolut] - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 27-12-2007 à 17:48:10    

Yep, salut, bonjour, hello,
Sur un Gnu/Linux Debian, je souhaite récupérer le contenu d'une colonne d'un tableau au format html dans un fichier texte.
Comment procéder ?
 
C'est un gros fichier.
 
 [:pingouinator]


Message édité par Profil supprimé le 29-12-2007 à 17:03:01
Reply

Marsh Posté le 27-12-2007 à 17:48:10   

Reply

Marsh Posté le 27-12-2007 à 18:31:20    

Copier-coller?


---------------
on est au 21 siècle plus person ne écrit correctement sur les forum ni sur msn ni sur les SMS.
Reply

Marsh Posté le 27-12-2007 à 19:27:41    

Ik12 a écrit :

Copier-coller?


Je vois pas ?

Reply

Marsh Posté le 28-12-2007 à 19:06:35    

Si le code HTML est assez propre, ceci devrait marcher :
 
gawk -f extract_column_from_html.gawk Tableau.html > resultat.txt
 
 
extract_column_from_html.gawk:

BEGIN{ TD = 0 }
 
/<\/tr/ { TD = 0 }
 
/<td/ {  
 TD++
 cell_content = ""
 if(TD==4) {
  getline
  while ( $0 !~ /<\/td/ ) {  
   if ( cell_content == "" ) cell_content = gensub(/&nbsp;|^[ \t]*|;/, "", "g", $0)
   else                      cell_content = cell_content " " gensub(/&nbsp;|^[ \t]*/, "", "g", $0)
   getline
  }    
  print cell_content
  }
}


 
Le numéro de la colonne du tableau que tu veux est à mettre dans le "if(TD==4)" { (ici colonne n°4).

Reply

Marsh Posté le 29-12-2007 à 06:18:31    

Yep, merci, je vais tester !
Bonne journée !

Reply

Marsh Posté le 29-12-2007 à 07:54:37    

Fichier résuktat vide  :whistle:  
 
Merci p-seeker23, merci tout de me pour ce code.
 
En fait mon code est généré par Access.

Message cité 1 fois
Message édité par Profil supprimé le 29-12-2007 à 07:55:24
Reply

Marsh Posté le 29-12-2007 à 08:45:19    


 
"Si le code HTML est assez propre" disais-je.
Ca m'étonnerait fortement que le code HTML produit par Access le soit ! J'ai déjà eu à travailler sur du "HTML-doc": laisse tomber ! Il y avait des <span>s de partout, c'est tout juste si on repérait la balise <html>, ..  :non:  
 
Ceci-dit, si tu me donne un exemple de ligne de ton tableau (le code HTML compris entre deux balises <tr> .. </tr> ), je te garantie que tu auras une solution !  :sol:  
J'ai juste cinq ans d'expérience professionnelle dans la manipulation de awk, sed et compagnie, les 10 derniers mois ayant-je à jouer à ce petit jeu (manipuler des fichiers de données pour formattage et extraction d'infos...) quasi-tous les jours.. si tu savais le genre de clowneries qu'on m'a demandé de faire avec des fichiers texte !  :ouch:

Reply

Marsh Posté le 29-12-2007 à 11:01:47    

Bien content de tomber sur toi en tout cas.
Voici un bout de code :

Code :
  1. <TR>
  2. <TD DIR=LTR ALIGN=RIGHT>828651</TD>
  3. <TD DIR=LTR ALIGN=LEFT>à-côté</TD>
  4. <TD DIR=LTR ALIGN=LEFT>akOte</TD>
  5. <TD DIR=LTR ALIGN=LEFT>à-côté</TD>
  6. <TD DIR=LTR ALIGN=LEFT>NOM</TD>
  7. <TD DIR=LTR ALIGN=LEFT>m</TD>
  8. <TD DIR=LTR ALIGN=LEFT>s</TD>
  9. <TD DIR=LTR ALIGN=RIGHT>0,00</TD>
  10. <TD DIR=LTR ALIGN=RIGHT>0,68</TD>
  11. <TD DIR=LTR ALIGN=RIGHT>0,00</TD>
  12. <TD DIR=LTR ALIGN=RIGHT>0,34</TD>
  13. <TD></TD>
  14. <TD DIR=LTR ALIGN=RIGHT>1</TD>
  15. <TD DIR=LTR ALIGN=RIGHT>8</TD>
  16. <TD DIR=LTR ALIGN=RIGHT>1</TD>
  17. <TD DIR=LTR ALIGN=RIGHT>6</TD>
  18. <TD DIR=LTR ALIGN=RIGHT>5</TD>
  19. <TD DIR=LTR ALIGN=LEFT>V-CVCV</TD>
  20. <TD DIR=LTR ALIGN=LEFT>VCVCV</TD>
  21. <TD DIR=LTR ALIGN=RIGHT>0</TD>
  22. <TD DIR=LTR ALIGN=RIGHT>8</TD>
  23. <TD DIR=LTR ALIGN=RIGHT>4</TD>
  24. <TD DIR=LTR ALIGN=RIGHT>3</TD>
  25. <TD DIR=LTR ALIGN=LEFT>a-kO-te</TD>
  26. <TD DIR=LTR ALIGN=RIGHT>3</TD>
  27. <TD DIR=LTR ALIGN=LEFT>V-CV-CV</TD>
  28. <TD DIR=LTR ALIGN=LEFT>étôc-à</TD>
  29. <TD DIR=LTR ALIGN=LEFT>etOka</TD>
  30. <TD DIR=LTR ALIGN=LEFT>à-côté</TD>
  31. <TD DIR=LTR ALIGN=LEFT>NOM</TD>
  32. </TR>


Reply

Marsh Posté le 29-12-2007 à 11:32:45    

sed 's/<[tT][dD].*>\(.*\)<\/[tT][dD]>.*/\1/g' Tableau.html | gawk '/<[tT][rR]/{ col=0; getline } { col++; if(col==4) print }' > col4.txt


 
Ca marche sur le bout de code HTML (qui est très propre pour le coup !) que tu donne. Récupération de la colonne 4.


Message édité par p-seeker23 le 29-12-2007 à 11:33:17
Reply

Marsh Posté le 29-12-2007 à 15:50:19    

Yep,
 
Sur la quatrième colonne, cher moi ça ne marche pas, sur la deuxieme non plus, en revanche ça semble marcher sur la première.
Je vais essayer d'intervertir l'ordre des colonne.

Reply

Marsh Posté le 29-12-2007 à 15:50:19   

Reply

Marsh Posté le 29-12-2007 à 16:58:53    

Yep
 
le ligne de commande fonctionne  :jap:  
 
Merci, j'ai récupéré ma colonne ; En fait j'ai une machine qui interprète mal les caractères accentué et qui traitait le fichier en conséquence.
 
Voila. Et bien merci beaucoup  :jap:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed