Récupération de données sur allociné

Récupération de données sur allociné - PHP - Programmation

Marsh Posté le 13-11-2011 à 16:17:47    

Salut,
 
J'ai un problème pour récuperer une information sur allociné.
 
Voici le code html :
 

Code :
  1. <li>
  2. <span class="film_info lighten fl">Nationalité</span>
  3. <div class="oflow_a">
  4. <span class="acLnk 1F4446484E1FCB4FC3C21FC04AC6C21E232025241F underline">Iranien</span>
  5. </div>
  6. </li>


 
et mon code php :
 

Code :
  1. <?php
  2. preg_match('#<li><span class="film_info lighten fl">Nationalité</span><div class="oflow_a">(.*?)</div></li>#is', $recup, $nationalite);
  3. $sortie['nationalite'] = (empty($nationalite)) ? $absent['nationalite'] : utf8_decode(trim(strip_tags($nationalite[0])));
  4. ?>


 
Le problème est qu'il ne me renvoie rien :(


---------------
“ Un avis d’un homme non avisé ne doit jamais être pris en compte par un homme avisé. ” Jean Plancher, en 1810, « Chez Bonaparte »
Reply

Marsh Posté le 13-11-2011 à 16:17:47   

Reply

Marsh Posté le 13-11-2011 à 18:49:14    

Salut,
Peut-être un problème avec le caractère accentué de 'Nationalité'...
Personnellement je fait un utf8_decode sur le contenu à traiter, et je sauvegarde mes fichiers php en ANSI.

Reply

Marsh Posté le 13-11-2011 à 19:29:59    

la page est en utf8 donc pas de soucis :(


---------------
“ Un avis d’un homme non avisé ne doit jamais être pris en compte par un homme avisé. ” Jean Plancher, en 1810, « Chez Bonaparte »
Reply

Marsh Posté le 13-11-2011 à 20:11:26    

Pour vérifier que le problème viens bien du caractère accentué, tu peux essayer de le remplacer par un point (.).
 

preg_match('#<li><span class="film_info lighten fl">Nationalit.</span><div class="oflow_a">(.*?)</div></li>#is', $recup, $nationalite);
echo "<pre>" . htmlspecialchars( print_r( $nationalite, TRUE)) . "</pre>";


 
Par défaut les fonctions « preg » ne traitent pas de l'UTF-8.  
Si tu veux rester en UTF-8, tu peux essayer le modifier "u" en plus de "is" (#...#ius).
 

Reply

Marsh Posté le 15-11-2011 à 14:35:59    

ça ne fonctionne pas hélas :(


---------------
“ Un avis d’un homme non avisé ne doit jamais être pris en compte par un homme avisé. ” Jean Plancher, en 1810, « Chez Bonaparte »
Reply

Marsh Posté le 16-11-2011 à 11:25:35    

J'ai testé ce bout de code dans mon scraper :

Code :
  1. preg_match('/<li> <span class="film_info lighten fl">Nationalit.</span> <div class="oflow_a">(.*?)</div> </li>/', $recup, $nationalite);
  2. echo "<pre>" . htmlspecialchars( print_r( $nationalite, TRUE)) . "</pre>";


Et comme tu peut le voir, ça match :


Array
(
    [0] => <li> <span class="film_info lighten fl">Nationalité</span> <div class="oflow_a"> <span class="acLnk 1F4446484E1FCB4FC3C21FC04AC6C21E232020211F underline">Américain</span> </div> </li>
    [1] =>  <span class="acLnk 1F4446484E1FCB4FC3C21FC04AC6C21E232020211F underline">Américain</span>  
)


Mais l'une des première chose que je fait après avoir récupére le flux HTML UTF-8 sur allocine, c'est de le décoder (entre autre).
J'ai eu trop de problèmes avec les caractères accentués.

Code :
  1. $contents= file_get_contents( $url, false, $context);
  2. $contents= utf8_decode( $contents);


Je m'assure aussi que mon fichier php ne soit pas en UTF-8 mais bien en ANSI (l'utilisation d'un éditeur comme Notepad++
est très pratique pour ça).
Mes expressions régulières sont un peu plus simple aussi :

Code :
  1. if (preg_match( "/Nationalité(.*?)<\/div>/", $contents, $pays) > 0) {
  2.         $data['pays']= trim( strip_tags( $pays[1]));
  3.     }


Tu peut toujours sortir de l'UTF-8 en réencodant (je le fait pour des flux XML) :

Code :
  1. $value= $xml->createTextNode( utf8_encode( $data['pays']));


 

Reply

Marsh Posté le 16-11-2011 à 12:20:18    

Si tu veux scrapper des des données, je te conseille d'utiliser http://simplehtmldom.sourceforge.net/, tu iras 100 fois plus vite dans la construction de ton scrapper

Reply

Marsh Posté le 16-11-2011 à 14:09:13    

Reply

Marsh Posté le 16-11-2011 à 17:09:58    

Tout fonctionne, et j'ai regardé l'api c'est pas trop mal !
 
Merci !


---------------
“ Un avis d’un homme non avisé ne doit jamais être pris en compte par un homme avisé. ” Jean Plancher, en 1810, « Chez Bonaparte »
Reply

Marsh Posté le 26-11-2011 à 17:58:57    

Je t'en prie.

Reply

Sujets relatifs:

Leave a Replay

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