[RESOLU] enregistrer une page web générée par du code PHP

gwendunet
Invité n'ayant pas de compte PHPfrance

01 août 2016, 11:42

Bonjour,

J'aimerais pouvoir sauvegarder une page web (donc HTML) générée par du code PHP et ceci, en PHP évidemment.
En effet, je souhaite récupérer les résultats d'une requête effectuée sur un site contenant des publications (Style FAO, CGIAR...)

et pour couronner le tout, ça urge !!!
Merci beaucoup pour vos ("prochaines"!!!!?!) réponses ! :D

Elisedunet

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

01 août 2016, 12:09

salut,

Si c'est pressé t'es pas au bonne endroit ! :)

Ensuite il faut savoir dans quel contexte tu place :
- est ce que tu veux enregistrer dans un fichier ce qui est généré par le fichier que tu appels ?
- est ce que tu dois enregistrer un fichier que tu appels via une url ?

Dans le premier cas oriente toi vers les fonctions de bufferisation de sortie : ob_start il y a un exemple de ce que tu pourrais faire.

Dans le second cas il faut faire l'appel vers le serveur. suivant la configuration de ton serveur tu peux le faire directement avec fil_get_contents (exemple), sinon avec curl

Dans tout les cas la fonction file_put_contents te seras utile.

@+
Il en faut peu pour être heureux ......

elisedunetbis
Invité n'ayant pas de compte PHPfrance

04 août 2016, 09:26

Bonjour,

Je vais préciser : je souhaite enregistrer une page web PHP dynamique en page statique HTML complète. En effet, mon but est de récupérer les résultats d'une requete : Ces résultats sont des publications dont les liens ( lien vers doc PDF) n'apparaissent pas dans le code source de la page dynamique. ces liens apparaissent dans le code source uniquement lorsque la page dynamique est enregistrée en page web complète (statique).

Je n'y parviens toujours pas. je parviens juste à enregistrer la page web php dynamique en page HTML dynamique. (grâce à file_get_contents => merci moogli !!!!)

Merci pour votre aide !!
Elsiedunet.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

04 août 2016, 09:45

Bonjour,

Je vais préciser : je souhaite enregistrer une page web PHP dynamique en page statique HTML complète. En effet, mon but est de récupérer les résultats d'une requete : Ces résultats sont des publications dont les liens ( lien vers doc PDF) n'apparaissent pas dans le code source de la page dynamique. ces liens apparaissent dans le code source uniquement lorsque la page dynamique est enregistrée en page web complète (statique).

Je n'y parviens toujours pas. je parviens juste à enregistrer la page web php dynamique en page HTML dynamique. (grâce à file_get_contents => merci moogli !!!!)

Merci pour votre aide !!
Elsiedunet.

J'ai rien compris :mrgreen:

on va faire simple
- est ce que le fichier est "enregistré" par php ?
- est ce que ce qui doit être enregistré est généré entièrement par php ?

si une partie du rendu de la page est fait avec JS ce n'est pas possible simplement. Il va falloir passer par un moteur de rendu (en gros un navigateur embarqué qui va te retourner la chose).
Dans ce cas, pourquoi ne pas faire une version "sauvegardable" en php sans les choses JS ?

Je suppose que l'action d'enregistrement doit être automatique indépendamment du client ?

@+
Il en faut peu pour être heureux ......

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

04 août 2016, 09:55

Bonjour,
les liens ( lien vers doc PDF) n'apparaissent pas dans le code source de la page dynamique. ces liens apparaissent dans le code source uniquement lorsque la page dynamique est enregistrée en page web complète (statique)
Ce n'est pas claire ce que tu appelles une page dynamique vs. statique.

PHP génère du code HTML.
file_get_contents() permet de récupérer le code HTML d'une page quelconque qu'elle ait été générée par PHP ou par n'importe quel autre langage.
C'est l'équivalent de faire un clic droit sur la page, affiche la source.

Si ce que tu veux enregistrer n'apparait pas, alors c'est probablement qu'il y a du javascript qui intervient dans la construction de la page et c'est donc le navigateur internet qui va rajouter des éléments une fois la page chargée (et interprétée par le navigateur).
Pour le vérifier, tu peux désactiver le javascript de la page que tu veux enregistrer et voir si elle réagit pareil ou pas. Pour désactiver le JS, je te conseille d'installer l'extension Web developer sur Firefox ou Chrome.


Si c'est effectivement du javascript/ajax qui est à l'oeuvre pour construire cette page, alors c'est bcp + compliqué car il faut que ton "aspirateur de page" interprête le javascript pour se comporter comme un navigateur.
L'approche dans ce cas généralement est d'essayer de faire du reverse engineering pour comprendre où le site va chercher les données à afficher et à aller récupérer directement les flux qui servent à la construction.
Ton ami dans cecas pour étudier cela est la console réseau des outils de développement de Firefox et Chrome : Ctrl+Maj+i onglet réseau, rafraichis la page et analyse chaque ligne, en particulier les appels XHR et les fichiers JS
Quand tout le reste a échoué, lisez le mode d'emploi...

Mammouth du PHP | 1967 Messages

04 août 2016, 10:06

Cela dépend aussi de l'url utilisé dans file_get_content, qu'utilise tu ?

Si c'est une adresse du type http:// tu devrais trouver le HTML sauf si JS fait une partie du boulot, voir les post de mes collègues.
Si c'est une adresse relative ou via file: tu ne trouveras que la source PHP.

Mais si le script PHP et ton fichier contenant le file_get_content sont sur le même serveur, tu peux récupèrer la liste des fichier pdf de la même manière que le fait ton premier script PHP et ce sera plus simple de traiter les infos.
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Petit nouveau ! | 1 Messages

04 août 2016, 11:10

Bonjour @rthur,

Pour moi la différence entre dynamique et statique semble claire : dynamique génère des fichiers qui peuvent différer à chaque appel du navigateur != Statique qui reste telle quel quoi qu'il advienne.

Cependant, merci beaucoup pour vos réponses qui, j pense vont m'aider !!

elisedunet

Eléphant du PHP | 176 Messages

04 août 2016, 15:58

Ces liens apparaissent dans le code source uniquement lorsque la page dynamique est enregistrée en page web complète (statique).
La page web dynamique et statique (Si j'ai bien compris ce que tu entendais par ces deux termes) ont le même code source.
Pour info la console des navigateurs (F12) et le code source (CTRL+U) peuvent varier

Sinon si tu cherches un élément particulier dans ta page (les liens des publications),
tu peux utiliser une regex, ou simplehtmldom (http://simplehtmldom.sourceforge.net/) qui est super pratique
Cordialement
Naroth