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

  FORUM HardWare.fr
  Programmation
  HTML/CSS

  Recuperer donnée sur site web.

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Recuperer donnée sur site web.

n°1951995
socom
Posté le 21-12-2009 à 10:25:39  profilanswer
 

Bonjour a toutes et a tous.
J'explique se que je veux faire.
Je voudrais savoir s’il est possible de récupérer des morceaux de texte d'une page web (en php) automatiquement, pour que celle ci se mette a jour sur mon site quand elle change ?
Ex: sur cette page (http://forum.hardware.fr/hfr/profil-600700.htm), est t'il possible de récupérer le Nombre de messages postés (donc pour l'instant le chiffre 1) pour ensuite le mettre sur un site , et que celui ci mette a jour se chiffre a chaque foi que je poste un message ?
 
J'espère que quelqu'un ma comprit.
Si quelqu'un peut m'expliquer si c'est possible ou pas. Et si sa l'est comment faire pour récupérer cette donné.
 
(J'espère mettre mi dans la bonne sous-catégorie)
 
            Merci

mood
Publicité
Posté le 21-12-2009 à 10:25:39  profilanswer
 

n°1952006
olivthill
Posté le 21-12-2009 à 10:53:43  profilanswer
 

Oui, mais je ne crois pas qu'on puisse le faire en Javascript, ou pas facilement, ou seulement dans certaines cirsconstances. En tous cas, c'est tout à fait faisable en python (et c'est d'ailleurs l'un des intérêts de ce langage gratuit).

n°1952068
lautrejojo
Posté le 21-12-2009 à 14:02:18  profilanswer
 

Du moment que l'information recherchée est toujours au même endroit, tu peux utiliser libcurl pour aller interroger, en php notamment, le contenu d'une page, puis récupérer une ligne précise. La remettre dans une variable pour la réafficher chez toi ne sera pas le plus compliqué ;-)


---------------
Question sur la programmation ? DevWeb it!
n°1952071
socom
Posté le 21-12-2009 à 14:11:32  profilanswer
 

Je vais tester merci


Message édité par socom le 21-12-2009 à 14:52:13
n°1952078
darkgloom
Posté le 21-12-2009 à 14:19:32  profilanswer
 

4 lignes de php suffisent pour ça :
 

Code :
  1. $url = "tonurl";
  2. $file=file_get_contents($url);
  3. $pattern = '/UneRegExp/';
  4. preg_match_all($pattern, $file, $donnees);


 
Et tu obtiens ce que tu souhaites dans la variable $donnees, en utilisant l'expression régulière adéquat.
 
Après c'est peut être aussi simple avec la librairie curl je ne sais pas ^^

n°1952094
socom
Posté le 21-12-2009 à 14:57:02  profilanswer
 

darkgloom a écrit :

4 lignes de php suffisent pour ça :

 
Code :
  1. $url = "tonurl";
  2. $file=file_get_contents($url);
  3. $pattern = '/UneRegExp/';
  4. preg_match_all($pattern, $file, $donnees);
 

Et tu obtiens ce que tu souhaites dans la variable $donnees,
en utilisant l'expression régulière adéquat.

 

Après c'est peut être aussi simple avec la librairie curl je ne sais pas ^^

 


Je comprend pas trop se que tu dit (se qui est en rouge)
Désoler je suis vraiment mauvais.


Message édité par socom le 21-12-2009 à 14:59:05
n°1952112
darkgloom
Posté le 21-12-2009 à 15:22:16  profilanswer
 

http://www.commentcamarche.net/con [...] hpreg.php3
 
En gros il faut que tu lises le code source de la page où tu veux récupérer l'information et que tu la délimites par la regexp.
Exemple, pour récupérer le nombre de message postés dans le lien que tu as fourni :
 

Code :
  1. $url = "http://forum.hardware.fr/hfr/profil-600700.htm";
  2. $file=file_get_contents($url);
  3. $pattern = '/\<td class="profilCase3"\>([0-9]+)\<\/td\>/';
  4. preg_match_all($pattern, $file, $data);


 

n°1952120
stealth35
Posté le 21-12-2009 à 16:20:01  profilanswer
 

pour faire ca faut utilisé DomDocument (+ xpath), surtout pas les regex

 

http://php.net/manual/fr/class.domdocument.php


Message édité par stealth35 le 21-12-2009 à 16:21:03
n°1952129
socom
Posté le 21-12-2009 à 17:06:36  profilanswer
 

Donc avec l'exemple du nombre de message.
En créent un fichier test.php

Code :
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2.         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html>
  4. <head>
  5. <title>PHP Test</title>
  6. </head>
  7. <body>
  8. <?php
  9. $url = "http://forum.hardware.fr/hfr/profil-600700.htm";
  10. $file=file_get_contents($url);
  11. $pattern = '/\<td class="profilCase3"\>([0-9]+)\<\/td\>/';
  12. preg_match_all($pattern, $file, $data);
  13. ?>
  14. </body>
  15. </html>


 
Sa me met se message dans la page web:

Code :
  1. ([0-9]+)\<\/td\>/'; preg_match_all($pattern, $file, $data); ?>


 
J'ai lut les document DomDocument (+ xpath), j'ai essayer de comprendre comment utilisé DomDocument (+ xpath), mais je suis mieux avancer après cette lecture.
 
RegExp ou pas RegExp, qui a raison, qui a tord ?

n°1952132
stealth35
Posté le 21-12-2009 à 17:10:56  profilanswer
 

dans le sens ou DomDocument est fait pour manipuler ce genre de donné, c'est ce qu'il faut utilisé.
 
je vais te poster un exemple

mood
Publicité
Posté le 21-12-2009 à 17:10:56  profilanswer
 

n°1952136
stealth35
Posté le 21-12-2009 à 17:20:42  profilanswer
 

Code :
  1. $dom = new DomDocument();
  2. $dom->loadHTMLFile('http://forum.hardware.fr/hfr/profil-600700.htm');
  3.     
  4. $xpath         = new DOMXpath($dom);
  5. $element     = $xpath->query("//td[@class='profilCase3']" )->item(10);
  6.  
  7. echo $element->textContent;


Message édité par stealth35 le 21-12-2009 à 17:28:44
n°1952144
socom
Posté le 21-12-2009 à 17:33:06  profilanswer
 

Voila le code du fichier test.php

Code :
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2.         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html>
  4. <head>
  5. <title>PHP Test</title>
  6. </head>
  7. <body>
  8. <?php
  9.       $dom = new DomDocument();
  10.       $dom->loadHTMLFile('http://forum.hardware.fr/hfr/profil-600700.htm'); 
  11.      
  12.       $xpath = new DOMXpath($dom);
  13.       $elements = $xpath->query("//td[@class='profilCase3']" );
  14.          
  15.       foreach($elements as $item)
  16.       {
  17.           echo $item->textContent . PHP_EOL;
  18.       }
  19. ?>
  20. </body>
  21. </html>


 
Mais sa ne m'arche toujour pas.

Code :
  1. loadHTMLFile('http://forum.hardware.fr/hfr/profil-600700.htm'); $xpath = new DOMXpath($dom); $elements = $xpath->query("//td[@class='profilCase3']" ); foreach($elements as $item) { echo $item->textContent . PHP_EOL; } ?>

n°1952145
stealth35
Posté le 21-12-2009 à 17:34:33  profilanswer
 

ton php est pas activé ca vient pas du code...
ps: j'ai edit le code pour qu'il te retourne l'info que tu voulais


Message édité par stealth35 le 21-12-2009 à 17:35:34
n°1952147
socom
Posté le 21-12-2009 à 17:38:59  profilanswer
 

Pourtant avec m'importe quel autre page php sa marche, je voi pas pourquoi sa marche pas avec elle.
Je cherche.

n°1952149
stealth35
Posté le 21-12-2009 à 17:41:11  profilanswer
 

bizar...

n°1952152
socom
Posté le 21-12-2009 à 17:44:41  profilanswer
 

Le problème doit être régler mais je peut pas tester imediatement.
Peut tu m'expliquer comment tu a trouver    "//td[@class='profilCase3']"

n°1952153
stealth35
Posté le 21-12-2009 à 17:46:53  profilanswer
 

c'est du xpath, ca marche un peu comme le CSS,
tu prends tout les 'TD' qui on un attribut 'class' qui contient 'profilCase3'

 

http://fr.wikipedia.org/wiki/XPath
http://www.w3.org/TR/xpath


Message édité par stealth35 le 21-12-2009 à 17:47:27
n°1952156
socom
Posté le 21-12-2009 à 17:48:51  profilanswer
 

Ok
Voici se que ton code me donne dans la page web

Code :
  1. socom Vous n'avez pas accès à cette information   Monde » Europe » France » Isère   NA Membre 7 07/11/2007 21-12-2009 à  17:44     Envoyer un message privé à socom Accéder à la liste de tous ses messages


 
Y'aurai pas un moyen pour grader juste le 7 (nombre de message au moment ou j'ai copier le message)

n°1952157
stealth35
Posté le 21-12-2009 à 17:51:03  profilanswer
 

si si, je t'ai mis en haut que j'avai edité le code :
 

Code :
  1. $dom = new DomDocument();
  2.    $dom->loadHTMLFile('http://forum.hardware.fr/hfr/profil-600700.htm');
  3.        
  4.    $xpath         = new DOMXpath($dom);
  5.    $element     = $xpath->query("//td[@class='profilCase3']" )->item(10);
  6.    
  7.    echo $element->textContent;


 
et met l'encodage de ta page en utf-8

n°1952159
socom
Posté le 21-12-2009 à 17:57:10  profilanswer
 

Excuse moi j'avais oublier de mettre le code a jour.
 
Est'il possible de faire pareil avec une page php ?
L'adresse web est sous cette forme http://nomdusite.fr/index.php?page [...] ??_membres
Et quand je regarde le code source, je ne voix pas le texte que je veut mettre sur mon site.
 
P.S. J'ai les autorisations de l'auteur du site pour copier les texte.

n°1952163
stealth35
Posté le 21-12-2009 à 18:02:06  profilanswer
 

oui mais la requete sera differente suivant la page
montre un exemple de la page que tu veux parser

n°1952172
socom
Posté le 21-12-2009 à 18:09:57  profilanswer
 

En faite, il y a bien la phrase dans le code source.

Code :
  1. <tr>
  2.  <td>1</td>                            C'est le numero de la phrase
  3.  <td>...</td>                           Auteur de la phrase
  4.  <td>texte de je veut extraire</td>                         Phrase
  5.  <td><img src="http://???.nomdusite.fr/.../....png" alt="Hors ligne" title="Hors ligne"> <a href="index.php?page=...&amp;op=...&amp;id=70"><img src="http://???.nomdusite.fr/.../.....png" alt="..." title="..."></a>
  6.  <a href="index.php?page=...&amp;...=..."><img src="http://???.nomdusite.fr/.../.....png" alt=""></a></td>
  7.  </tr>


 
Voila le code de la page

Code :
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  2. <html xmlns="http://www.w3.org/.../xhtml" xml:lang="fr">
  3. <head>
  4. <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
  5. <meta http-equiv="pragma" content="no-cache" />
  6. <title>Nom du site</title>
  7. (...) j'ai supprimer la mise en page des different menu
  8. <br />
  9. <div class="corps_haut_grand"></div>
  10. <div class="corps_contenu_grand">
  11. <div class="texte">
  12. <span class="titre">Phrase du Jour " Thomas "</span>
  13. <img src="http://???.nomdusite.fr/.../???.png" alt="" /><br />
  14.  <table>
  15.   <tr class="tr_titre_grand">
  16.    <th style="text-align: left;">#</th>
  17.    <th style="text-align: left;">Pseudo</th>
  18.    <th style="text-align: left;">Phrase</th>
  19.    <th style="text-align: left;">Date d'inscription</th>
  20.    <th style="text-align: left;">Infos</th>
  21.   </tr>
  22.  <tr>
  23.  <td>Phrase n1</td>
  24.  <td>Nom de l'auteur</td>
  25.  <td>Phrase que je veux copier</td>
  26.  <td>??/??/2009</td>
  27.  <td><img src="http://???.nomdusite.fr/.../???.png" alt="Hors ligne" title="Hors ligne" /> <a href="index.php?page=...&amp;op=...&amp;id=70" /><img src="http://???.nomdusite.fr/.../???.png" alt="Envoyer un message à Thomas" title="Envoyer un message à Thomas" /></a>
  28.  <a href="index.php?page=...&amp;...=Thomas"><img src="http://???.nomdusite.fr/.../???.png" alt="" /></a></td>
  29.  </tr>
  30.  <tr>
  31.  <td>2</td>
  32.  <td>...</td>
  33.  (...) pareil que les 6 ligne presedente pour chacune des phrase
  34.   <tr class="tr_pied_grand">
  35.    <th colspan="7">&nbsp;</th>
  36.   </tr>
  37.  </table>
  38. </div>
  39. </div>
  40. <div class="corps_bas_grand"></div> <div class="footer_haut" style="height: 15px;"></div>
  41. <div class="footer_contenu">
  42.  <div id="texte_footer">
  43.  &copy; Nom du site 2009 - <a href="http://www.???.fr" onclick="window.open(this.href); return false;">Tous droits réservés</a><br />
  44.    Date serveur : 21/12 18:24:59
  45.  </div>
  46. </div>
  47. <div class="footer_bas"></div>
  48. </div>
  49. <div id="pub"><script type="text/javascript" src="http://???.???.com/mySlot.jsp?id=..."></script></div>
  50. </div>
  51. </body>
  52. </html>


 
 
Est ce que quelqu'un veut m'adapter le code pour se site.
Merci


Message édité par socom le 21-12-2009 à 20:18:43
n°1952288
lautrejojo
Posté le 22-12-2009 à 09:46:20  profilanswer
 

Je pense qu'en cherchant un peu avec toutes les ressources que tu as déjà eu, tu dois pouvoir adapter un code...


---------------
Question sur la programmation ? DevWeb it!
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  HTML/CSS

  Recuperer donnée sur site web.

 

Sujets relatifs
Neige sur site internetrécupérer un lien de la bbd et le mettre sur un titre récupéré
[Résolu] Copier la structure d'un site[SHELL] récuperer les nieme caract. dans des chaine obtenue par | grep
Comment modifier la langue d'un site flash grace à un fichier xml ?comment faire tourner du PHP sur un site hebergé en "local"
Appliquer une feuille de style en fonction du site visité (Safari)Creation base de donnée gestion du stock
Recuperer l'email d'un user sur ADSI depuis VBAvisuel studio 2008/recuperer la valeur d'une cellule du gridview
Plus de sujets relatifs à : Recuperer donnée sur site web.


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