Récupérer des infos d'un fichier html pour les mettre dans un fichier

Récupérer des infos d'un fichier html pour les mettre dans un fichier - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 26-02-2009 à 16:48:51    

J'aimerai récupérer à partir d'une liste de ref que j'aurai rentré dans un fichier texte. Avec ces ref, j'aimerai qu'il me mette la ref, désignation et prix dans un fichier texte avec une tabulation entre chaque éléments et d'avoir une ligne par article...
 
Je parts de ca :

<tr>
    <td width="8%" height="18">&nbsp;</td>
    <td width="11%" style=" border-left: 1px solid;" bordercolor="#000000" height="18" align="Left" valign="top"><font face="@Arial Unicode MS" color="#000080">CPUIN00141</font></td>
    <td width="64%" style=" border-left: 1px solid;" bordercolor="#000000" height="18" align="Left" valign="top"><font face="@Arial Unicode MS" color="#000080">INTEL QUAD CORE Q9650 S775 12Mo 3 Ghz BOX</font></td>
    <td width="9%" style=" border-left: 1px solid; border-right: 1px solid;" bordercolor="#000000" height="18" align="Right" valign="middle"><font face="@Arial Unicode MS" color="#000080">999,99</font></td>
    <td width="8%" height="18">&nbsp;</td>
  </tr>


 
Et j'aimerai arriver à ca :

CPUIN0014 "une tab" INTEL QUAD CORE Q9650 S775 12Mo 3 Ghz BOX "une tab" 999,99


 
Car je connais que les bases de grep et ca le fait pas..... j'arrive juste à avoir la ref (que je rentre dans ma commande) mais je ne sais pas comment avoir les 2 autres éléments et les mettre bien en ordre...

Reply

Marsh Posté le 26-02-2009 à 16:48:51   

Reply

Marsh Posté le 26-02-2009 à 17:00:22    

perl [:delarue6]

Message cité 1 fois
Message édité par wedgeant le 26-02-2009 à 17:00:45

---------------
Wedge#2487 @HS -#- PW: +∞ -#- Khaz-Modan/Boltiz @WoW
Reply

Marsh Posté le 26-02-2009 à 17:00:36    

http://simbot.wordpress.com/2006/0 [...] ng-python/
 
Ca semble être une bonne piste ça :)

Reply

Marsh Posté le 26-02-2009 à 17:00:51    

Reply

Marsh Posté le 26-02-2009 à 17:01:16    


ou perl [:ginie]


---------------
Wedge#2487 @HS -#- PW: +∞ -#- Khaz-Modan/Boltiz @WoW
Reply

Marsh Posté le 26-02-2009 à 17:35:11    

En Perl ça pique quand-même moins les yeux  :o  
 
http://www.perl.com/pub/a/2003/09/17/perlcookbook.html

Reply

Marsh Posté le 26-02-2009 à 19:34:33    

perl, python rien à faire....
Avec le script "404 Not Found", j'avais un message d'erreur car il me manquait un "module" : HTML/TableContentParser
Après il se passe rien, j'ai tapé :  
perl test.perl Tcpu.htm
perl test2.perl

Reply

Marsh Posté le 26-02-2009 à 19:54:45    

Il y a pas un truc simple du style si il trouve la ref, il prend la ligne et les 2 autres du dessous pour arriver à ça :

<td width="11%" style=" border-left: 1px solid;" bordercolor="#000000" height="18" align="Left" valign="top"><font face="@Arial Unicode MS" color="#000080">CPUIN00141</font></td><td width="64%" style=" border-left: 1px solid;" bordercolor="#000000" height="18" align="Left" valign="top"><font face="@Arial Unicode MS" color="#000080">INTEL QUAD CORE Q9650 S775 12Mo 3 Ghz BOX</font></td><td width="9%" style=" border-left: 1px solid; border-right: 1px solid;" bordercolor="#000000" height="18" align="Right" valign="middle"><font face="@Arial Unicode MS" color="#000080">999,99</font></td>


Un fois là il y aurait plus qu'a supprimer le code (il est identique pour tout les produits) avant la ref et après le prix, et de remplacer le code entre la ref/la désignation et désignation/prix par une tabulation.
Avec Awk?


---------------
Jyp
Reply

Marsh Posté le 26-02-2009 à 20:48:32    

man awk  [:mrbrelle]

Reply

Marsh Posté le 26-02-2009 à 22:42:23    

Il est gros le man... ;)

Reply

Marsh Posté le 26-02-2009 à 22:42:23   

Reply

Marsh Posté le 26-02-2009 à 22:58:55    

Un bot ( perl@freenode ) avisé me souffle dans mon oreillette :

Citation :


<perlbot> Don't parse html with regular expressions! See HTML::Parser, and its subclasses: HTML::TokeParser, HTML::TokeParser::Simple,  
HTML::TreeBuilder, HTML::TableExtract, etc. See also http://htmlparsing.icenine.ca/.  If your response begins "that's overkill.  
i only want to..." you are wrong.

Reply

Marsh Posté le 26-02-2009 à 23:05:16    

Reply

Marsh Posté le 26-02-2009 à 23:40:50    

Parce que des solutions à l'arrache on est des déglingos, on peux en sortir :
 

Code :
  1. $ cat<<EOF | awk -F'[<>]' '($5) {print $5}' | tr '\n' '\t'; echo
  2. >> <tr>
  3. >>     <td width="8%" height="18">&nbsp;</td>
  4. >>     <td width="11%" style=" border-left: 1px solid;" bordercolor="#000000" height="18" align="Left" valign="top"><font face="@Arial Unicode MS" color="#000080">CPUIN00141</font></td>
  5. >>     <td width="64%" style=" border-left: 1px solid;" bordercolor="#000000" height="18" align="Left" valign="top"><font face="@Arial Unicode MS" color="#000080">INTEL QUAD CORE Q9650 S775 12Mo 3 Ghz BOX</font></td>
  6. >>     <td width="9%" style=" border-left: 1px solid; border-right: 1px solid;" bordercolor="#000000" height="18" align="Right" valign="middle"><font face="@Arial Unicode MS" color="#000080">999,99</font></td>
  7. >>     <td width="8%" height="18">&nbsp;</td>
  8. >>   </tr>
  9. >> EOF
  10. CPUIN00141      INTEL QUAD CORE Q9650 S775 12Mo 3 Ghz BOX       999,99


 
Mais c'est le mal...

Reply

Marsh Posté le 27-02-2009 à 08:05:42    


[:mlc]
c'est quoi cette commande ?  [:canaille]


---------------
Wedge#2487 @HS -#- PW: +∞ -#- Khaz-Modan/Boltiz @WoW
Reply

Marsh Posté le 27-02-2009 à 09:48:48    

sputnick a écrit :

Parce que des solutions à l'arrache on est des déglingos, on peux en sortir :
 

Code :
  1. $ cat<<EOF | awk -F'[<>]' '($5) {print $5}' | tr '\n' '\t'; echo
  2. >> <tr>
  3. >>     <td width="8%" height="18">&nbsp;</td>
  4. >>     <td width="11%" style=" border-left: 1px solid;" bordercolor="#000000" height="18" align="Left" valign="top"><font face="@Arial Unicode MS" color="#000080">CPUIN00141</font></td>
  5. >>     <td width="64%" style=" border-left: 1px solid;" bordercolor="#000000" height="18" align="Left" valign="top"><font face="@Arial Unicode MS" color="#000080">INTEL QUAD CORE Q9650 S775 12Mo 3 Ghz BOX</font></td>
  6. >>     <td width="9%" style=" border-left: 1px solid; border-right: 1px solid;" bordercolor="#000000" height="18" align="Right" valign="middle"><font face="@Arial Unicode MS" color="#000080">999,99</font></td>
  7. >>     <td width="8%" height="18">&nbsp;</td>
  8. >>   </tr>
  9. >> EOF
  10. CPUIN00141      INTEL QUAD CORE Q9650 S775 12Mo 3 Ghz BOX       999,99


 
Mais c'est le mal...


merci pour ton code mais ca me renvoie ca : &nbsp; &nbsp;

Reply

Marsh Posté le 27-02-2009 à 13:39:43    

jyp :
awk -F'[<>]' '($5) {print $5}' fichier.html | tr '\n' '\t'; echo


Message édité par sputnick le 27-02-2009 à 22:42:35
Reply

Marsh Posté le 28-02-2009 à 09:23:00    

wedgeant a écrit :


[:mlc]
c'est quoi cette commande ?  [:canaille]


un html2text qui restera confidentiel faut croire, y aura toujours des gens pour aimer pondre des awkeries

Reply

Sujets relatifs:

Leave a Replay

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