Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2293 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°2111194
Orission
Posté le 13-11-2011 à 16:17:47  profilanswer
 

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, 1810, Taverne « Chez Bonaparte »
mood
Publicité
Posté le 13-11-2011 à 16:17:47  profilanswer
 

n°2111209
sparks79
Posté le 13-11-2011 à 18:49:14  profilanswer
 

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.

n°2111215
Orission
Posté le 13-11-2011 à 19:29:59  profilanswer
 

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, 1810, Taverne « Chez Bonaparte »
n°2111222
sparks79
Posté le 13-11-2011 à 20:11:26  profilanswer
 

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).
 

n°2111519
Orission
Posté le 15-11-2011 à 14:35:59  profilanswer
 

ç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, 1810, Taverne « Chez Bonaparte »
n°2111705
sparks79
Posté le 16-11-2011 à 11:25:35  profilanswer
 

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']));


 

n°2111735
tylerball
Posté le 16-11-2011 à 12:20:18  profilanswer
 

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

n°2111781
bouillbou
Posté le 16-11-2011 à 14:09:13  profilanswer
 
n°2111836
Orission
Posté le 16-11-2011 à 17:09:58  profilanswer
 

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, 1810, Taverne « Chez Bonaparte »
n°2113370
bouillbou
Posté le 26-11-2011 à 17:58:57  profilanswer
 

Je t'en prie.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

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

 

Sujets relatifs
comment recuperer les données d'un formulaire dans un autreVBA couper une partie des données dans une autre colonne
requete sur type de données[deb][python]choix type données pour un tri
[c#] Problème de récupération membervalue depuis comboboxRécupération de la date et de lheure sur un serveur de temps.
Question Bases de données des banques[BATCH] récupération taille total disque
Problème connection base de données en C++[POO] Héritage vers Base de données relationelle
Plus de sujets relatifs à : Récupération de données sur allociné


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR