Récupération de données dans un fichier HTML

Récupération de données dans un fichier HTML - Perl - Programmation

Marsh Posté le 12-05-2012 à 12:32:37    

Bonjour,
 
me revoilà avec un problème que je n'arrive pas résoudre. J'essaie dans le fichier HTML ci-dessous de récupérer les données en gras.
En fait j'aimerais avoir un fichier texte (resfrance1.txt) qui me donnerait le résultat suivant, la journée de championnat, les deux équipes qui se rencontrent, le score et la date.
 
36. Round
Rennes - Montpellier 0:2 07.05.2012
Auxerre - Bordeaux 2:4 07.05.2012
Lille - Caen 3:0 07.05.2012
Lorient - Dijon 0:0 07.05.2012
St Etienne - Marseille 0:0 07.05.2012
Sochaux - Nancy 1:0 07.05.2012
Toulouse- Nice 0:0 07.05.2012
Valenciennes - Paris SG 3:4 06.05.2012
Evian TG - Ajaccio 2:1 06.05.2012
Lyon - Brest 1:1 06.05.2012
35. Round
Dijon - Auxerre 0:2 03.05.2012
Paris SG - St Etienne 2:0 02.05.2012
......
 
jusqu'à la 1ère journée(1. Round)
 
 
Fichier HTML

Code :
  1. <table class="result-table league-results" cellspacing="0" id="resultstable"><tr class="rtitle first-row"><th class="left first-cell">36. Round</th><th>&nbsp;</th><th>1</th><th>X</th><th>2</th><th class="nobr last-cell">&nbsp;</th></tr>
  2. <tr class="first-row"><td class="first-cell tl"><a href="../matchdetails.php?matchid=797630" onclick="win(this.href, 500, 500, 0, 1); return false;">Rennes - Montpellier</a></td><td>0:2&nbsp;(0:1, 0:1)</td><td class="odds">2.39</td><td class="odds">3.13</td><td class="odds best-betrate">2.97</td><td class="last-cell nobr date">07.05.2012</td></tr>
  3. <tr class="strong"><td class="first-cell tl"><a href="../matchdetails.php?matchid=797625" onclick="win(this.href, 500, 500, 0, 1); return false;">Auxerre - Bordeaux</a></td><td>2:4&nbsp;(0:3, 2:1)</td><td class="odds">2.26</td><td class="odds">3.18</td><td class="odds best-betrate">3.13</td><td class="last-cell nobr date">07.05.2012</td></tr>
  4. <tr class=""><td class="first-cell tl"><a href="../matchdetails.php?matchid=797627" onclick="win(this.href, 500, 500, 0, 1); return false;">Lille - Caen</a></td><td>3:0&nbsp;(2:0, 1:0)</td><td class="odds best-betrate">1.26</td><td class="odds">5.36</td><td class="odds">10.85</td><td class="last-cell nobr date">07.05.2012</td></tr>
  5. <tr class="strong"><td class="first-cell tl"><a href="../matchdetails.php?matchid=797628" onclick="win(this.href, 500, 500, 0, 1); return false;">Lorient - Dijon</a></td><td>0:0&nbsp;(0:0, 0:0)</td><td class="odds">1.77</td><td class="odds best-betrate">3.36</td><td class="odds">4.72</td><td class="last-cell nobr date">07.05.2012</td></tr>
  6. <tr class=""><td class="first-cell tl"><a href="../matchdetails.php?matchid=797631" onclick="win(this.href, 500, 500, 0, 1); return false;">St Etienne - Marseille</a></td><td>0:0&nbsp;(0:0, 0:0)</td><td class="odds">2.22</td><td class="odds best-betrate">3.19</td><td class="odds">3.20</td><td class="last-cell nobr date">07.05.2012</td></tr>
  7. <tr class="strong"><td class="first-cell tl"><a href="../matchdetails.php?matchid=797632" onclick="win(this.href, 500, 500, 0, 1); return false;">Sochaux - Nancy</a></td><td>1:0&nbsp;(0:0, 1:0)</td><td class="odds best-betrate">2.31</td><td class="odds">3.13</td><td class="odds">3.09</td><td class="last-cell nobr date">07.05.2012</td></tr>
  8. <tr class=""><td class="first-cell tl"><a href="../matchdetails.php?matchid=797633" onclick="win(this.href, 500, 500, 0, 1); return false;">Toulouse - Nice</a></td><td>0:0&nbsp;(0:0, 0:0)</td><td class="odds">1.71</td><td class="odds best-betrate">3.37</td><td class="odds">5.16</td><td class="last-cell nobr date">07.05.2012</td></tr>
  9. <tr class="strong"><td class="first-cell tl"><a href="../matchdetails.php?matchid=797634" onclick="win(this.href, 500, 500, 0, 1); return false;">Valenciennes - Paris SG</a></td><td>3:4&nbsp;(2:3, 1:1)</td><td class="odds">4.30</td><td class="odds">3.34</td><td class="odds best-betrate">1.83</td><td class="last-cell nobr date">06.05.2012</td></tr>
  10. <tr class=""><td class="first-cell tl"><a href="../matchdetails.php?matchid=797626" onclick="win(this.href, 500, 500, 0, 1); return false;">Evian TG - Ajaccio</a></td><td>2:1&nbsp;(1:1, 1:0)</td><td class="odds best-betrate">1.98</td><td class="odds">3.29</td><td class="odds">3.71</td><td class="last-cell nobr date">06.05.2012</td></tr>
  11. <tr class="strong"><td class="first-cell tl"><a href="../matchdetails.php?matchid=797629" onclick="win(this.href, 500, 500, 0, 1); return false;">Lyon - Brest</a></td><td>1:1&nbsp;(1:0, 0:1)</td><td class="odds">1.38</td><td class="odds best-betrate">4.37</td><td class="odds">7.99</td><td class="last-cell nobr date">06.05.2012</td></tr>
  12. <tr class="rtitle"><th class="left first-cell">35. Round</th><th>&nbsp;</th><th>1</th><th>X</th><th>2</th><th class="nobr last-cell">&nbsp;</th></tr>
  13. <tr class="first-row"><td class="first-cell tl"><a href="../matchdetails.php?matchid=797619" onclick="win(this.href, 500, 500, 0, 1); return false;">Dijon - Auxerre</a></td><td>0:2&nbsp;(0:1, 0:1)</td><td class="odds">2.55</td><td class="odds">3.12</td><td class="odds best-betrate">2.76</td><td class="last-cell nobr date">03.05.2012</td></tr>
  14. <tr class="strong"><td class="first-cell tl"><a href="../matchdetails.php?matchid=797624" onclick="win(this.href, 500, 500, 0, 1); return false;">Paris SG - St Etienne</a></td><td>2:0&nbsp;(1:0, 1:0)</td><td class="odds best-betrate">1.50</td><td class="odds">4.01</td><td class="odds">6.26</td><td class="last-cell nobr date">02.05.2012</td></tr>
  15. <tr class=""><td class="first-cell tl"><a href="../matchdetails.php?matchid=797615" onclick="win(this.href, 500, 500, 0, 1); return false;">Ajaccio - Sochaux</a></td><td>2:1&nbsp;(0:0, 2:1)</td><td class="odds best-betrate">2.17</td><td class="odds">3.13</td><td class="odds">3.40</td><td class="last-cell nobr date">02.05.2012</td></tr>
  16. <tr class="strong"><td class="first-cell tl"><a href="../matchdetails.php?matchid=797616" onclick="win(this.href, 500, 500, 0, 1); return false;">Bordeaux - Rennes</a></td><td>2:0&nbsp;(0:0, 2:0)</td><td class="odds best-betrate">2.36</td><td class="odds">3.10</td><td class="odds">3.03</td><td class="last-cell nobr date">02.05.2012</td></tr>
  17. <tr class=""><td class="first-cell tl"><a href="../matchdetails.php?matchid=797617" onclick="win(this.href, 500, 500, 0, 1); return false;">Brest - Toulouse</a></td><td>0:0&nbsp;(0:0, 0:0)</td><td class="odds">2.89</td><td class="odds best-betrate">3.00</td><td class="odds">2.54</td><td class="last-cell nobr date">02.05.2012</td></tr>
  18. <tr class="strong"><td class="first-cell tl"><a href="../matchdetails.php?matchid=797618" onclick="win(this.href, 500, 500, 0, 1); return false;">Caen - Lorient</a></td><td>1:0&nbsp;(0:0, 1:0)</td><td class="odds best-betrate">2.37</td><td class="odds">3.08</td><td class="odds">3.03</td><td class="last-cell nobr date">02.05.2012</td></tr>
  19. <tr class=""><td class="first-cell tl"><a href="../matchdetails.php?matchid=797620" onclick="win(this.href, 500, 500, 0, 1); return false;">Lyon - Valenciennes</a></td><td>4:1&nbsp;(1:1, 3:0)</td><td class="odds best-betrate">1.63</td><td class="odds">3.63</td><td class="odds">5.40</td><td class="last-cell nobr date">02.05.2012</td></tr>
  20. <tr class="strong"><td class="first-cell tl"><a href="../matchdetails.php?matchid=797621" onclick="win(this.href, 500, 500, 0, 1); return false;">Marseille - Nancy</a></td><td>1:0&nbsp;(1:0, 0:0)</td><td class="odds best-betrate">1.59</td><td class="odds">3.74</td><td class="odds">5.58</td><td class="last-cell nobr date">02.05.2012</td></tr>
  21. <tr class=""><td class="first-cell tl"><a href="../matchdetails.php?matchid=797623" onclick="win(this.href, 500, 500, 0, 1); return false;">Nice - Lille</a></td><td>0:1&nbsp;(0:1, 0:0)</td><td class="odds">4.35</td><td class="odds">3.38</td><td class="odds best-betrate">1.82</td><td class="last-cell nobr date">02.05.2012</td></tr>
  22. <tr class="strong"><td class="first-cell tl"><a href="../matchdetails.php?matchid=797622" onclick="win(this.href, 500, 500, 0, 1); return false;">Montpellier - Evian TG</a></td><td>2:2&nbsp;(1:1, 1:1)</td><td class="odds">1.38</td><td class="odds best-betrate">4.29</td><td class="odds">8.62</td><td class="last-cell nobr date">01.05.2012</td></tr>
  23. <tr class="rtitle"><th class="left first-cell">34. Round</th><th>&nbsp;</th><th>1</th><th>X</th><th>2</th><th class="nobr last-cell">&nbsp;</th></tr>
  24. <tr class="first-row"><td class="first-cell tl"><a href="../matchdetails.php?matchid=797606" onclick="win(this.href, 500, 500, 0, 1); return false;">Evian TG - Lyon</a></td><td>1:3&nbsp;(1:1, 0:2)</td><td class="odds">3.04</td><td class="odds">3.29</td><td class="odds best-betrate">2.25</td><td class="last-cell nobr date">10.05.2012</td></tr>
  25. <tr class="strong"><td class="first-cell tl"><a href="../matchdetails.php?matchid=797607" onclick="win(this.href, 500, 500, 0, 1); return false;">Lille - Paris SG</a></td><td>2:1&nbsp;(0:0, 2:1)</td><td class="odds best-betrate">2.11</td><td class="odds">3.38</td><td class="odds">3.25</td><td class="last-cell nobr date">29.04.2012</td></tr>
  26. <tr class=""><td class="first-cell tl"><a href="../matchdetails.php?matchid=797605" onclick="win(this.href, 500, 500, 0, 1); return false;">Auxerre - Brest</a></td><td>4:0&nbsp;(4:0, 0:0)</td><td class="odds best-betrate">2.04</td><td class="odds">3.11</td><td class="odds">3.76</td><td class="last-cell nobr date">29.04.2012</td></tr>
  27. <tr class="strong"><td class="first-cell tl"><a href="../matchdetails.php?matchid=797609" onclick="win(this.href, 500, 500, 0, 1); return false;">Nancy - Caen</a></td><td>1:1&nbsp;(0:0, 1:1)</td><td class="odds">1.99</td><td class="odds best-betrate">3.18</td><td class="odds">3.82</td><td class="last-cell nobr date">29.04.2012</td></tr>
  28. <tr class=""><td class="first-cell tl"><a href="../matchdetails.php?matchid=797610" onclick="win(this.href, 500, 500, 0, 1); return false;">Rennes - Ajaccio</a></td><td>3:1&nbsp;(1:0, 2:1)</td><td class="odds best-betrate">1.42</td><td class="odds">4.16</td><td class="odds">7.69</td><td class="last-cell nobr date">29.04.2012</td></tr>
  29. <tr class="strong"><td class="first-cell tl"><a href="../matchdetails.php?matchid=797611" onclick="win(this.href, 500, 500, 0, 1); return false;">St Etienne - Dijon</a></td><td>1:0&nbsp;(1:0, 0:0)</td><td class="odds best-betrate">1.67</td><td class="odds">3.53</td><td class="odds">5.17</td><td class="last-cell nobr date">29.04.2012</td></tr>
  30. <tr class=""><td class="first-cell tl"><a href="../matchdetails.php?matchid=797612" onclick="win(this.href, 500, 500, 0, 1); return false;">Sochaux - Bordeaux</a></td><td>0:3&nbsp;(0:1, 0:2)</td><td class="odds">2.42</td><td class="odds">3.11</td><td class="odds best-betrate">2.91</td><td class="last-cell nobr date">29.04.2012</td></tr>
  31. <tr class="strong"><td class="first-cell tl"><a href="../matchdetails.php?matchid=797614" onclick="win(this.href, 500, 500, 0, 1); return false;">Valenciennes - Nice</a></td><td>2:0&nbsp;(1:0, 1:0)</td><td class="odds best-betrate">2.01</td><td class="odds">3.11</td><td class="odds">3.90</td><td class="last-cell nobr date">29.04.2012</td></tr>
  32. <tr class=""><td class="first-cell tl"><a href="../matchdetails.php?matchid=797608" onclick="win(this.href, 500, 500, 0, 1); return false;">Lorient - Marseille</a></td><td>2:1&nbsp;(1:0, 1:1)</td><td class="odds best-betrate">2.42</td><td class="odds">3.15</td><td class="odds">2.90</td><td class="last-cell nobr date">27.04.2012</td></tr>
  33. <tr class="strong"><td class="first-cell tl"><a href="../matchdetails.php?matchid=797613" onclick="win(this.href, 500, 500, 0, 1); return false;">Toulouse - Montpellier</a></td><td>0:1&nbsp;(0:1, 0:0)</td><td class="odds">2.61</td><td class="odds">3.08</td><td class="odds best-betrate">2.72</td><td class="last-cell nobr date">27.04.2012</td></tr>
  34. <tr class="rtitle"><th class="left first-cell">33. Round</th><th>&nbsp;</th><th>1</th><th>X</th><th>2</th><th class="nobr last-cell">&nbsp;</th></tr>
  35. <tr class="first-row"><td class="first-cell tl"><a href="../matchdetails.php?matchid=797601" onclick="win(this.href, 500, 500, 0, 1); return false;">Lyon - Lorient</a></td><td>3:2&nbsp;(1:2, 2:0)</td><td class="odds best-betrate">1.52</td><td class="odds">3.90</td><td class="odds">6.25</td><td class="last-cell nobr date">22.04.2012</td></tr>
  36. <tr class="strong"><td class="first-cell tl"><a href="../matchdetails.php?matchid=797595" onclick="win(this.href, 500, 500, 0, 1); return false;">Ajaccio - Nancy</a></td><td>0:0&nbsp;(0:0, 0:0)</td><td class="odds">2.39</td><td class="odds best-betrate">3.10</td><td class="odds">2.98</td><td class="last-cell nobr date">22.04.2012</td></tr>
  37. <tr class=""><td class="first-cell tl"><a href="../matchdetails.php?matchid=797604" onclick="win(this.href, 500, 500, 0, 1); return false;">Paris SG - Sochaux</a></td><td>6:1&nbsp;(3:1, 3:0)</td><td class="odds best-betrate">1.34</td><td class="odds">4.58</td><td class="odds">8.79</td><td class="last-cell nobr date">22.04.2012</td></tr>
  38. <tr class="strong"><td class="first-cell tl"><a href="../matchdetails.php?matchid=797596" onclick="win(this.href, 500, 500, 0, 1); return false;">Bordeaux - Marseille</a></td><td>2:1&nbsp;(2:0, 0:1)</td><td class="odds best-betrate">2.34</td><td class="odds">3.08</td><td class="odds">3.10</td><td class="last-cell nobr date">21.04.2012</td></tr>
  39. <tr class=""><td class="first-cell tl"><a href="../matchdetails.php?matchid=797597" onclick="win(this.href, 500, 500, 0, 1); return false;">Brest - Rennes</a></td><td>0:1&nbsp;(0:1, 0:0)</td><td class="odds">3.49</td><td class="odds">3.04</td><td class="odds best-betrate">2.17</td><td class="last-cell nobr date">21.04.2012</td></tr>
  40. <tr class="strong"><td class="first-cell tl"><a href="../matchdetails.php?matchid=797598" onclick="win(this.href, 500, 500, 0, 1); return false;">Caen - St Etienne</a></td><td>1:4&nbsp;(0:1, 1:3)</td><td class="odds">2.59</td><td class="odds">3.06</td><td class="odds best-betrate">2.74</td><td class="last-cell nobr date">21.04.2012</td></tr>
  41. <tr class=""><td class="first-cell tl"><a href="../matchdetails.php?matchid=797599" onclick="win(this.href, 500, 500, 0, 1); return false;">Dijon - Lille</a></td><td>0:2&nbsp;(0:2, 0:0)</td><td class="odds">4.66</td><td class="odds">3.41</td><td class="odds best-betrate">1.76</td><td class="last-cell nobr date">21.04.2012</td></tr>
  42. <tr class="strong"><td class="first-cell tl"><a href="../matchdetails.php?matchid=797600" onclick="win(this.href, 500, 500, 0, 1); return false;">Evian TG - Toulouse</a></td><td>2:1&nbsp;(1:0, 1:1)</td><td class="odds best-betrate">2.57</td><td class="odds">3.03</td><td class="odds">2.80</td><td class="last-cell nobr date">21.04.2012</td></tr>
  43. <tr class=""><td class="first-cell tl"><a href="../matchdetails.php?matchid=797602" onclick="win(this.href, 500, 500, 0, 1); return false;">Montpellier - Valenciennes</a></td><td>1:0&nbsp;(1:0, 0:0)</td><td class="odds best-betrate">1.43</td><td class="odds">4.16</td><td class="odds">7.48</td><td class="last-cell nobr date">21.04.2012</td></tr>
  44. <tr class="strong"><td class="first-cell tl"><a href="../matchdetails.php?matchid=797603" onclick="win(this.href, 500, 500, 0, 1); return false;">Nice - Auxerre</a></td><td>1:0&nbsp;(1:0, 0:0)</td><td class="odds best-betrate">2.04</td><td class="odds">3.17</td><td class="odds">3.69</td><td class="last-cell nobr date">21.04.2012</td></tr>
  45. ...............


 
 
Mon code Perl est le suivant et mon problème est que le fichier resfrance1.txt est bien créer mais il est vide. Je me demande si ici le module HTML::TreeBuilder est bien adapté, car il n'y a pas de balise <tr> qui encadre le match, le score et la date, c'est très découpé comme code  du coup c'est plus compliqué que je pensais. Merci pour vos réponses éclairées.
 

Code :
  1. #!C:/Perl/bin/perl.exe -w
  2. use strict; use warnings;
  3. use HTML::TreeBuilder;
  4. use LWP::Simple;
  5. open(A,">resfrance1.txt" );
  6. my $url = 'http://www.betexplorer.com/soccer/france/ligue-1/results/';
  7. my $tree = HTML::TreeBuilder->new_from_content(get($url));
  8. my @tr = $tree->find('tr');
  9. foreach (@tr) {
  10.   my @infos = ();
  11.   my $th = $_->look_down("_tag", "th", "class", "left first-cell" );
  12.   next unless ($th);
  13.   my @content = $th->content_list();
  14.   push @infos, $content[0];
  15.   my $td = $_->look_down("_tag", "td", "class", "first-cell tl" );
  16.   next unless ($td);
  17.   my $a = $td->find('a');
  18.   next unless ($a);
  19.   @content = $a->content_list();
  20.   push @infos, $content[0];
  21.   my $td1 = $_->look_down("_tag", "td" );
  22.   @content = $td1->content_list();
  23.   push @infos, $content[0];
  24.   my $td2 = $_->look_down("_tag", "td", "class", "last-cell nobr date" );
  25.   next unless ($td2);
  26.   @content = $td2->content_list();
  27.   push @infos, $content[0];
  28.   print A "@infos\n";
  29.   }
  30.  
  31. $tree = $tree->delete;
  32. close A;

Reply

Marsh Posté le 12-05-2012 à 12:32:37   

Reply

Marsh Posté le 12-05-2012 à 16:55:59    

Ca marche pas parce que les tr contenant les th qui t'intéressent ne sont pas les mêmes que ceux contenant les td qui t'intéressent (mais hiérarchiquement leur frères) et que ton code le suppose (on a un tr constant a chaque tour de boucle du foreach)
 
On démarre
foreach (@tr) {
  my @infos = ();
  my $th = $_->look_down("_tag", "th", "class", "left first-cell" ); #ok, trouvé
  next unless ($th);
  my @content = $th->content_list();
  push @infos, $content[0];
  my $td = $_->look_down("_tag", "td", "class", "first-cell tl" ); # pas trouve, car c'est pas dans le tr courant
  next unless ($td);
 
tour de boucle d'après
  my @infos = ();
  my $th = $_->look_down("_tag", "th", "class", "left first-cell" ); #pas trouve, car c'est pas dans le tr courant
  next unless ($th);
 
 
etc.
 
Bref, regarde ta hierarchie html et fais tes ordres de recherche de contenu en fonction.
 
A+,


Message édité par gilou le 12-05-2012 à 16:57:37

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 12-05-2012 à 17:51:13    

Merci pour ta réponse Gilou, c'est un peu ce que je pensais, je vais réessayer autrement. Donc en fait le foreach ne convient pas ici sur les tr, par contre il faut quand même que je fasse une boucle pour pouvoir récupérer les contenus de chaque journée. Je vais essayer d'éclaircir ce code HTML(mais j'ai déjà retourner le problème dans tous les sens) et de trouver une autre solution.

Reply

Marsh Posté le 12-05-2012 à 19:15:14    

Ben déja, formattes correctement ta table, pour y voir plus clair:

<table class="result-table league-results" cellspacing="0" id="resultstable">
  <tr class="rtitle first-row">
     <th class="left first-cell">36. Round</th>
     <th>&nbsp;</th>
     <th>1</th>
     <th>X</th>
     <th>2</th>
     <th class="nobr last-cell">&nbsp;</th>
  </tr>
  <tr class="first-row">
     <td class="first-cell tl">
       <a href="../matchdetails.php?matchid=797630" onclick="win(this.href, 500, 500, 0, 1); return false;">Rennes - Montpellier</a>
     </td>
     <td>0:2&nbsp;(0:1, 0:1)</td>
     <td class="odds">2.39</td>
     <td class="odds">3.13</td>
     <td class="odds best-betrate">2.97</td>
     <td class="last-cell nobr date">07.05.2012</td>
  </tr>


 
Après le code est assez simple:

Code :
  1. my ($td, $th, $a, $att, @infos, @content);  #les variables utiles
  2. my @tr = $tree->find('tr');
  3. foreach (@tr) {
  4.  @infos = ();
  5.  @content = ();
  6.  my $att = $_->attr("class" );
  7.  if ($att and $att =~ /rtitle/) { #si tr avec attribut class avec rtitle, on y cherche un th
  8.    $th = $_->look_down("_tag", "th", "class", "left first-cell" );
  9.    next unless ($th);
  10.    @content = $th->content_list();
  11.    print A $content[0], "\n";
  12.  }
  13.  else {  #sinon on est dans l'autre cas de figure
  14.    $td = $_->look_down("_tag", "td", "class", "first-cell tl" );
  15.    next unless ($td);
  16.    $a = $td->find('a');
  17.    next unless ($a);
  18.    @content = $a->content_list();
  19.    push @infos, $content[0];
  20.    $td = $td->right;
  21.    @content = $td->content_list();
  22.    if ($content[0] =~ /(\d+:\d+)/) {
  23.      push @infos, $1;
  24.    }
  25.    else {
  26.      push @infos, "-:-";
  27.    }
  28.    $td = $_->look_down("_tag", "td", "class", "last-cell nobr date" );
  29.    next unless ($td);
  30.    @content = $td->content_list();
  31.    push @infos, $content[0];
  32.    print A "@infos\n";
  33.  }
  34. }


 


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 12-05-2012 à 19:51:25    

Alors franchement je sais pas comment te remercier gilou ! Ton code est d'une précision diabolique :)  
Je vois que j'étais à des milliers d'années lumières de ce que tu as fais et qd je lis le code ça parait tellement logique.  
Il faut vraiment que je fasse des exercices de base en Perl et surtout que j'acquiert la logique de programmation qui pour l'instant me fait grand défaut.
Merci mille fois.
 
Est-ce que tu connais un bon livre Perl pour débutant et qui traite de tout ce qui est manipulation de textes, fichiers, récup de données ?

Reply

Marsh Posté le 12-05-2012 à 20:09:11    

Citation :

Est-ce que tu connais un bon livre Perl pour débutant

Hélas, pas vraiment. C'est soit trop compliqué, soit trop simple en général.
Il y a un certain nb de bouquin gratuits ici: http://www.perl.org/books/library.html#beginningperl
Perso, j'ai appris avec entre autres avec un gros pavé intitulé Perl 5 How To qui enseigne par l'exemple (des tonnes de petits programmes utiles, un par tache précise), mais ce bouquin date pas mal maintenant.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 12-05-2012 à 21:09:25    

Ok, super ce lien je vais certainement pouvoir trouver des choses intéressantes pour progresser.
Pour  Perl 5 How-To je viens de voir qu'il est encore sur Amazon.com, je viens de regarder les commentaires des acheteurs et plusieurs déplorent beaucoup d'erreurs dans les codes, est-ce que tu as remarqué ça quand tu l'utilisais ?


Message édité par thales69 le 12-05-2012 à 21:10:26
Reply

Marsh Posté le 12-05-2012 à 22:29:35    

Ce ne sont pas vraiment des erreurs, c'est que le bouquin est vieux et que son code est un poil obsolète (Perl a pas mal évolué depuis).
C'est pas vraiment un bouquin que je conseillerais pour apprendre de nos jours, je le citais juste comme exemple.
En particulier, il y a plein de modules pratiques qui n'existaient pas quand il a été écrit.
Le truc qui me plaisait bien avec ce bouquin c'était l'aspect pratique: pour chaque petit bout de truc que je voulais faire, j'allais voir leurs exemples de base afin d'avoir une idée de comment procéder. C'est vraiment dommage que je ne connaisse pas de bouquin moderne avec la même approche pratique. La plupart des bouquins ont une approche relativement théorique, or pour quelqu'un qui manipule déja d'autres langages de prog, c'est sans grand intérêt.
A+,


Message édité par gilou le 12-05-2012 à 22:34:40

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 12-05-2012 à 22:52:40    

Merci à toi, je vais déjà me contenter du lien que tu m'as donné et des ressources web.
A+

Reply

Marsh Posté le 13-05-2012 à 09:43:27    

Juste deux petites questions Gilou par rapport au code que tu as posté hier pour que je comprenne bien:
 
Que fait exactement la ligne 20 avec le $td->right; ? Est-ce que ça précise au programme de regarder les balises $td qui se trouve à droite au même niveau  hiérarchique?
 
Et ligne 26 quand le contenu d'un td ne matche pas avec le motif (\d+:\d+), que veut dire  push @infos, "-:-"; ?
 
Merci


Message édité par thales69 le 13-05-2012 à 09:45:25
Reply

Marsh Posté le 13-05-2012 à 09:43:27   

Reply

Marsh Posté le 13-05-2012 à 11:39:04    

:hello:  

Citation :

Est-ce que ça précise au programme de regarder les balises $td qui se trouve à droite au même niveau  hiérarchique

Non, ça précise de prendre la balise à droite de la balise $td (laquelle va aussi être une balise de type td) Balise à droite au même niveau, sinon, ça n'a plus guère de sens (il faut considérer la structure arborescente un noeud de l'arbre peut avoir des noeuds frères a droite ou à gauche, un noeud parent, et des noeuds fils).

Citation :

Et ligne 26 quand le contenu d'un td ne matche pas avec le motif (\d+:\d+), que veut dire  push @infos, "-:-"; ?

Si je trouve pas de score, comme par exemple 3:2, dans le source, je remplace par un score bidon -:- pour garder une mise en page à peu près cohérente.
 
A+,


Message édité par gilou le 13-05-2012 à 11:39:57

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 13-05-2012 à 14:39:03    

Merci à toi pour les précisions
A+

Reply

Sujets relatifs:

Leave a Replay

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