Récupérer le code source d'une page

Récupérer le code source d'une page - PHP - Programmation

Marsh Posté le 01-07-2003 à 09:05:23    

Bonjour,
le but de mon script PHP est de récupérer le source d'une page html afin de la parcourir et d'en extraire certaines informations. C'est la partie récupération de la page qui ne marche pas. Or, la fonction file doit retourner un tableau contenant l'ensemble des mots du fichier, ici la source.
Cependant, si j'essaye d'afficher une case du tableau, je n'ai rien et dans le script que j'ai écrit ci-dessous, le fichier créé  fait 0 octets. Est ce que kk1 pourrait me conseiller ?
Merci.
 

Code :
  1. <?
  2. // On ouvre le fichier
  3. $temp = file('http://www.clubic.com/n/n9238.html');
  4. $temp = implode(' ', $temp);
  5. // On créer le fichier sur le serveur
  6. $fp = fopen("copie_test.php","w" );
  7. // On enregistre les données
  8. fputs($fp, "$temp" );
  9. // On ferme le fichier)
  10. fclose($fp);
  11. ?>


---------------
Linux registered user #352556
Reply

Marsh Posté le 01-07-2003 à 09:05:23   

Reply

Marsh Posté le 01-07-2003 à 09:25:27    

HTML(le source des pages web est du HTML) est un sous-langage de XML (bon, un langage car XML est un méta-langage) alors pense aux parseurs XML (SAX, DOM est surement trop pour ce que tu as besoin) pour acceder à tes fichiers HTML ...

Reply

Marsh Posté le 01-07-2003 à 09:27:56    

western a écrit :

HTML(le source des pages web est du HTML) est un sous-langage de XML (bon, un langage car XML est un méta-langage) alors pense aux parseurs XML (SAX, DOM est surement trop pour ce que tu as besoin) pour acceder à tes fichiers HTML ...


 
Euh ouais, perso j'ai pas tout compris mais ce ke je comprends pas c'est k'en asp, il suffit de lire ce ki arrive dans une socket et de le mettre dans une string pour pouvoir traiter le code html. Ce la doit donc etre possible en PHP. Et il me semblait que ce code la marchait, vu que c'est celui fourni sur la doc php. Or ca foire et si kk1 l'a deja fait, il pourrait m'éclairer de sa lanterne.


---------------
Linux registered user #352556
Reply

Marsh Posté le 01-07-2003 à 10:55:10    

claque2000 a écrit :

Bonjour,
le but de mon script PHP est de récupérer le source d'une page html afin de la parcourir et d'en extraire certaines informations. C'est la partie récupération de la page qui ne marche pas. Or, la fonction file doit retourner un tableau contenant l'ensemble des mots du fichier, ici la source.
Cependant, si j'essaye d'afficher une case du tableau, je n'ai rien et dans le script que j'ai écrit ci-dessous, le fichier créé  fait 0 octets. Est ce que kk1 pourrait me conseiller ?
Merci.
 

Code :
  1. <?
  2. // On ouvre le fichier
  3. $temp = file('http://www.clubic.com/n/n9238.html');
  4. $temp = implode(' ', $temp);
  5. // On créer le fichier sur le serveur
  6. $fp = fopen("copie_test.php","w" );
  7. // On enregistre les données
  8. fputs($fp, "$temp" );
  9. // On ferme le fichier)
  10. fclose($fp);
  11. ?>

 


 
Je ne comprends pas bien ton problème.
 
Il suffit de faire un fopen et fread ensuite pour lire ton fichier HTML comme n'importe quel fichier non ?
 :??:

Reply

Marsh Posté le 01-07-2003 à 10:58:29    

western a écrit :

HTML(le source des pages web est du HTML) est un sous-langage de XML (bon, un langage car XML est un méta-langage) alors pense aux parseurs XML (SAX, DOM est surement trop pour ce que tu as besoin) pour acceder à tes fichiers HTML ...


 
non,  
 


SGML
 \---------> HTML -\
  \--> XML ---------\--> XHTML


pas facile à faire en ASCII :D HTML vient du SGML (SGML est le contenant, HTML le contenu). XML est une spécialisation de SGML, toujours un contenant. XHTML c'est du HTML dans un document XML.
 
un document HTML n'est que très rarement un document XML valide (faut vraiment du bol pour que ça le soit)


Message édité par antp le 01-07-2003 à 11:00:12

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 01-07-2003 à 11:05:16    

Hermes le Messager a écrit :


 
Je ne comprends pas bien ton problème.
 
Il suffit de faire un fopen et fread ensuite pour lire ton fichier HTML comme n'importe quel fichier non ?
 :??:  


Bah justement, je sais pas si c'est si simple que ca. C'est pour cela que je demande conseil. Et surtout, ce ke j'aimerai savoir, c'est pourkoi mon code ne marche pas alors que c'est via la doc de php.net que je l'ai obtenu.


---------------
Linux registered user #352556
Reply

Marsh Posté le 01-07-2003 à 11:30:20    

Bon problème résolu à l'aide de fopen et fgets.
Ca m'explike pas pk mon code précédent foirait mais bon.


---------------
Linux registered user #352556
Reply

Marsh Posté le 01-07-2003 à 12:02:02    

antp a écrit :


 


SGML
 |---------> HTML
 |
 |---------> XML
              |-----> XHTML


pas facile à faire en ASCII :D HTML vient du SGML (SGML est le contenant, HTML le contenu). XML est une spécialisation de SGML, toujours un contenant. XHTML c'est du HTML dans un document XML.
 
un document HTML n'est que très rarement un document XML valide (faut vraiment du bol pour que ça le soit)


Juste un problème avec certains balises (br, etc.) Il suffit d'avoir un parseur laxiste
EDIT:
ou faire du XHTML car utilisation d'un parseur XML simplifié la vie et facilite l'extraction des informations ...


Message édité par western le 01-07-2003 à 12:03:23
Reply

Marsh Posté le 01-07-2003 à 12:04:44    

avec n'importe quelle balise
 
<table>
<tr>
<td>A
<tr>
<td>B
 
c'est valide [:spamafote]


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 01-07-2003 à 12:06:27    

antp a écrit :

avec n'importe quelle balise
 
<table>
<tr>
<td>A
<tr>
<td>B
 
c'est valide [:spamafote]


J'aimera voir la rendu d'une page HTML ne contenant que les balises ouvrantes!

Reply

Marsh Posté le 01-07-2003 à 12:06:27   

Reply

Marsh Posté le 01-07-2003 à 12:07:38    

claque2000 a écrit :

Bon problème résolu à l'aide de fopen et fgets.
Ca m'explike pas pk mon code précédent foirait mais bon.


Passke comme le dit Hermès, une fois le HTML ouvert avec le premier fopen, il faut lire le fichier avec un fread (ou un fgets). Ca se lit pas tout seul. Comme en C, fopen te retourne un pointeur (ou en PHP un "file descriptor" ) sur le fichier ouvert et pas une chaîne de caractères.


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 01-07-2003 à 12:08:18    

western a écrit :


J'aimera voir la rendu d'une page HTML ne contenant que les balises ouvrantes!


Ba de toute façon, un simple <br> suffit à faire planter ton parseur XML [:spamafote]


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 01-07-2003 à 12:12:08    

Taiche a écrit :


Ba de toute façon, un simple <br>  


C'est bien ce que j'ai dit, non? à moins que tu ne lit qu'une ligne sur deux ...

Taiche a écrit :


suffit à faire planter ton parseur XML [:spamafote]


Oui mais à un moment, le parseur DOM du php plantait pas
D'autre part, utiliser un parseur SAX ...

Reply

Marsh Posté le 01-07-2003 à 12:14:02    

western a écrit :


J'aimera voir la rendu d'une page HTML ne contenant que les balises ouvrantes!


 
il faut quand même un </table> :o
 
www.antp.be/temp/html4open.html
 


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
   "http://www.w3.org/TR/html4/strict.dtd">
<html>
   <head>
      <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
      <title>Page de test</title>
   </head>
   <body>
    <table>
    <tr>
    <td>A
    <tr>
    <td>B
    </table>
    <p>Coucou !


 
Cette page est tout à fait valide :
http://validator.w3.org/check?uri= [...] 4open.html


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 01-07-2003 à 13:07:31    


Pas bien de piquer les news des autres  
 
$temp = file('http://www.clubic.com/n/n9238.html');  

Reply

Marsh Posté le 01-07-2003 à 14:02:49    

Taiche a écrit :


Passke comme le dit Hermès, une fois le HTML ouvert avec le premier fopen, il faut lire le fichier avec un fread (ou un fgets). Ca se lit pas tout seul. Comme en C, fopen te retourne un pointeur (ou en PHP un "file descriptor" ) sur le fichier ouvert et pas une chaîne de caractères.


Oui mais la fonction file est censée retourner dans un tableau le contenu du fichier. Ou alors g pas compris le but de la fonction file, ni l'exemple fourni.


---------------
Linux registered user #352556
Reply

Marsh Posté le 01-07-2003 à 14:08:16    

antp a écrit :


 
non,  
 


SGML
 \---------> HTML -\
  \--> XML ---------\--> XHTML


pas facile à faire en ASCII :D HTML vient du SGML (SGML est le contenant, HTML le contenu). XML est une spécialisation de SGML, toujours un contenant. XHTML c'est du HTML dans un document XML.
 
un document HTML n'est que très rarement un document XML valide (faut vraiment du bol pour que ça le soit)


En fait, XML est clairement derivé du SGML.
HTML par contre, est vaguement inspiré du SGML, mais du HTML n'est pas du SGML a la base, juste du texte taggé, avec un taggage respectant la syntaxe usuelle du SGML.
D'autre part, SGML et XML sont des meta langages. Pas HTML et XHTML.
A+,
 


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

Marsh Posté le 01-07-2003 à 14:21:59    

en gros c'est ce que je disais, non ? :D


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 01-07-2003 à 14:30:04    

claque2000 a écrit :


Oui mais la fonction file est censée retourner dans un tableau le contenu du fichier. Ou alors g pas compris le but de la fonction file, ni l'exemple fourni.


Ah ui. Intéressant, j'avais pas vu [:ddr555]


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 01-07-2003 à 14:32:34    

Taiche a écrit :


Ah ui. Intéressant, j'avais pas vu [:ddr555]  


spo grave mais ct qd mm ca la question de depart : est ce ke c file ou implode qui chie ?
Ou est ce mon script qu'est tout pourri bien que repompe integralement sur php.net ?


---------------
Linux registered user #352556
Reply

Marsh Posté le 01-07-2003 à 14:40:19    

claque2000 a écrit :


spo grave mais ct qd mm ca la question de depart : est ce ke c file ou implode qui chie ?
Ou est ce mon script qu'est tout pourri bien que repompe integralement sur php.net ?


Ba pour le savoir, j'te conseille de tester direct un echo de la première ligne juste après le file(). Je pencherais effectivement pour un plantage dans implode(). Tu veux faire quoi avec, au juste ?


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 01-07-2003 à 14:45:28    

Taiche a écrit :


Ba pour le savoir, j'te conseille de tester direct un echo de la première ligne juste après le file(). Je pencherais effectivement pour un plantage dans implode(). Tu veux faire quoi avec, au juste ?


Euh ...  :D  
Etant inscrit sur hebus.com, j'ai le droit de downloader toutes les images, et c'est ce ke je compte faire, l'ayant deja fait. Bon la premiere fois, j'avais telecharge les galleries au format zip. C devenu payant de prendre les zip. Le site fonctionnant par cookies, il me suffit de me connecter une fois, histoire que le cookie soit present et apres je v parcourir les pages que me renvoie hebus, en cherchant les liens vers le cat, gallerie puis chaque image et enregister l'image correspondante. Tout comme si je le fesais à la main. C juste automatiser un travail long à la main. C fesable aussi en java et je sais le faire mais jveux le faire en PHP  :na:


---------------
Linux registered user #352556
Reply

Marsh Posté le 01-07-2003 à 19:19:17    

antp a écrit :

en gros c'est ce que je disais, non ? :D


Pas tout a fait, car tu disais ceci: HTML vient du SGML (SGML est le contenant, HTML le contenu).  
qui n'est pas tout a fait exact.
Aux debuts de HTML, y'avait pas vraiment de DTD.
A+,


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

Marsh Posté le 01-07-2003 à 19:51:05    

Reply

Marsh Posté le 01-07-2003 à 23:32:06    

claque2000 a écrit :

Bon problème résolu à l'aide de fopen et fgets.
Ca m'explike pas pk mon code précédent foirait mais bon.

Faut imploder sur rien :

Code :
  1. $source_html = implode("", file("tapage" ));

Reply

Marsh Posté le 02-07-2003 à 11:09:20    

THEniluje a écrit :

Faut imploder sur rien :

Code :
  1. $source_html = implode("", file("tapage" ));




Yess, merci. En fait le implode sur rien, je l'avais fait dès le début. Mais j'ai testé le code sur mon compte lycos, et ca foirait.  
Jviens de reessayer sur le serveur apache installe par mes soins au taf et ca tourne nickel. Conclusion : lycos c gratuit, y'a 50 megs mais ca marche pas top.


Message édité par claque2000 le 02-07-2003 à 11:09:42

---------------
Linux registered user #352556
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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