IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Enregistrer une page sous


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 103
    Points : 46
    Points
    46
    Par défaut Enregistrer une page sous
    Bonjour,
    j'aimerais savoir si il est possible que PHP imite le comportement d'un navigateur quand celui-ci fait un enregistrement d'une page.
    En gros, quand on (nous, utilisateurs) fait enregistrer sous, on obtient un fichier htm, et éventuellement un dossier portant le même nom.
    Je souhaiterais que PHP puisse faire la même chose, genre
    fopen("unepage.html","r");
    enregistrer_sous("sauvegarde.htm");

    Il s'agit d'une page assez particulière, avec du contenu qui n'apparait dans le code source QUE si on fait enregistrer sous (j'ai pas compris pourquoi, mais du coup c'est ma seule méthode pour avoir une copie de la page sans "trou").

    Merci

  2. #2
    Expert confirmé
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Points : 4 853
    Points
    4 853
    Par défaut
    Salut,

    si je t'ai bien compris tu voudrais que PHP gère l'action du bouton "Enregistrer (Sous)" du navigateur ?
    Développeur | Zend Certified Engineer

    Étapes Pour mieux se servir du forum:
    1. Commencez par lire les cours et tutoriels ;
    2. Faites une recherche;
    3. Faites un post si rien trouvé dans les deux étapes précédentes en respectant les règles;

    Nix>_Rien n'est plus pratique que la théorie

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 103
    Points : 46
    Points
    46
    Par défaut
    Mm... non, c'est pas ça.
    J'exécute le code php directement depuis le serveur, donc ça ne passe par aucun navigateur.
    Je prends un exemple, j'imagine une fonction qui ferait ceci:

    $page = "http://www.developpez.net/forums/newreply.php?do=newreply&noquote=1&p=4913848" ; // au hasard
    sauvegarder($page) ;

    //
    Cette fonction crée un fichier html sur le serveur (ou .txt d'ailleurs, on s'en fout) dont le contenu serait le code source de la page en question.

    J'ai déjà fait quelques tests avec cURL, mais je n'obtiens pas le contenu qui est pourtant visible sur la page.

    Mais bon, je vais laisser tomber, je pense que ça n'est pas possible.

  4. #4
    Expert confirmé
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Points : 4 853
    Points
    4 853
    Par défaut
    Ok, je comprends.
    Citation Envoyé par AIexis Voir le message
    J'ai déjà fait quelques tests avec cURL, mais je n'obtiens pas le contenu qui est pourtant visible sur la page.
    Si le résultat n'était pas le même ça suppose qu'il manquait les fichiers des styles externes ?
    Développeur | Zend Certified Engineer

    Étapes Pour mieux se servir du forum:
    1. Commencez par lire les cours et tutoriels ;
    2. Faites une recherche;
    3. Faites un post si rien trouvé dans les deux étapes précédentes en respectant les règles;

    Nix>_Rien n'est plus pratique que la théorie

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 103
    Points : 46
    Points
    46
    Par défaut
    Je ne sais pas vraiment comment appeler ce qui manque.
    Dans le code source que j'obtiens avec curl, j'ai un truc genre:
    <table>
    <tr>
    <td>
    </td>
    </tr>
    </table>

    Donc vide.
    Mais visuellement, lorsqu'on visite le site, ce tableau est rempli ! (et ce contenu n'est pas dans le code source de la page. en tout cas firefox, chrome et IE ne le voient pas).
    Et bien entendu, c'est le contenu de ce tableau que je souhaiterais récupérer

    Je ne connais cette histoire de styles externes, je vais regarder un peu ce que dit mon ami google.

  6. #6
    Expert confirmé
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Points : 4 853
    Points
    4 853
    Par défaut
    Dans ce cas la page est certainement construite dynamiquement (DOM).

    Les fonctions php ne pouront pas récuperer le contenu à ce stade (car nécissitant un navigateur qui exécuterai le code javascript...).
    Développeur | Zend Certified Engineer

    Étapes Pour mieux se servir du forum:
    1. Commencez par lire les cours et tutoriels ;
    2. Faites une recherche;
    3. Faites un post si rien trouvé dans les deux étapes précédentes en respectant les règles;

    Nix>_Rien n'est plus pratique que la théorie

  7. #7
    Membre averti Avatar de BornBanane
    Homme Profil pro
    dev
    Inscrit en
    Mars 2007
    Messages
    284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Mars 2007
    Messages : 284
    Points : 416
    Points
    416
    Par défaut
    Peut être que la page utilise du javascript pour remplir le tableau. Si celui-ci est inclus en lien relatif alors effectivement ca ne marchera pas.
    Smiley de Plomb 2009
    Anciennement FrancoisIT

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 103
    Points : 46
    Points
    46
    Par défaut
    Il m'est déjà arrivé de faire ce genre de travail, et j'y étais arrivé, en trouvant la source du contenu (en utilisant firebug j'avais trouvé comment le div était rempli dynamiquement)
    Mais là, rien à faire, j'arrive pas à piger comment ce tableau est rempli.

    Merci pour vos réponses

  9. #9
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    Bonsoir,

    Si c'est pour faire un simple export du HTML d'une page je te conseille d'utiliser stream_get_contents :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    if ($stream = fopen('http://www.exemple.net', 'r')) {
        // Affichage des 5 premiers octets
        echo stream_get_contents($stream, 5);
     
        fclose($stream);
    }
    Si tu souhaites faire un export de nombreuses pages, et obtenir les dépendances CSS, Js, images etc... et si ton serveur est sous UNIX tu peux très probablement lancer wget avec la fonction system

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 103
    Points : 46
    Points
    46
    Par défaut
    J'ai malheureusement un serveur sous windows
    Je suis pas certain que wget fonctionnerait, d'autant plus (la cerise sur le gateau), que pour obtenir la page il faut que j'envoie des données en POST.

    merci pour l'idée quand même

  11. #11
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    Ha là je sais pas si wget gère çà, mais si jamais t'as l'info hésites pas à le signaler.

    Pour créer une requête avec des valeurs POST :

    http://www.php.net/manual/fr/functio...eate.php#90411

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 103
    Points : 46
    Points
    46
    Par défaut
    Alors je fais tourner l'info: on peut apparemment envoyer du POST avec wget en utilisant --post-data

    wget --post-data "variable1=toto&variable2=tata"

    Cela dit, mon problème n'est pas là puisque j'envoie bien la requête (j'utilise cURL et je connaissais pas la fonction stream_context_create).
    Ma requête est bien envoyée, reçue par le serveur, traitée, et je reçois bien des données en retour, sous forme d'un tableau... mais toujours vide (je résume).

    J'ai installé divers outils de développeur sur firefox, et désormais je vois bien le tableau rempli dans le code source de la page. M'enfin ça m'avance pas beaucoup, si firefox le voit, mais pas PHP

    Si quelqu'un a un serveur sous linux et pouvait tester rapidos wget, ça serait bien urbain.
    Je filerai la ligne de commande wget en MP.

  13. #13
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    Si tu reçois des données, et plus particulièrement un tableau HTML vide, c'est que soit l'URL est différente, soit les données que tu postes ne sont pas similaires et aussi nombreuses.

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 103
    Points : 46
    Points
    46
    Par défaut
    Le tableau est toujours apparemment vide (dans le code source), mais les navigateurs arrivent à mettre des trucs dedans par l'opération du saint-esprit (enfin, je ne vois plus que çà )

  15. #15
    Expert confirmé
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Points : 4 853
    Points
    4 853
    Par défaut
    Citation Envoyé par AIexis Voir le message
    Il m'est déjà arrivé de faire ce genre de travail, et j'y étais arrivé, en trouvant la source du contenu (en utilisant firebug j'avais trouvé comment le div était rempli dynamiquement)
    Mais là, rien à faire, j'arrive pas à piger comment ce tableau est rempli.

    Merci pour vos réponses
    tu dois dans ce cas regarder les codes js exécutés après ou pendant le chargement de la page.
    Développeur | Zend Certified Engineer

    Étapes Pour mieux se servir du forum:
    1. Commencez par lire les cours et tutoriels ;
    2. Faites une recherche;
    3. Faites un post si rien trouvé dans les deux étapes précédentes en respectant les règles;

    Nix>_Rien n'est plus pratique que la théorie

  16. #16
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 103
    Points : 46
    Points
    46
    Par défaut
    C'est un site hyper compliqué avec 20 millions de js chargés dans tous les sens, et j'y comprends pas grand chose au javascript
    Mais tu as raison, il faut fouiller dans ce sens là...

  17. #17
    Expert confirmé
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Points : 4 853
    Points
    4 853
    Par défaut
    Tu dois quand même te rendre compte que si ton tableau est rempli via JS (DOM, AJAX...) il te seras pas possible de récupérer le contenu.

    As tu l'autorisation de copier la page en question ?
    Développeur | Zend Certified Engineer

    Étapes Pour mieux se servir du forum:
    1. Commencez par lire les cours et tutoriels ;
    2. Faites une recherche;
    3. Faites un post si rien trouvé dans les deux étapes précédentes en respectant les règles;

    Nix>_Rien n'est plus pratique que la théorie

  18. #18
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 103
    Points : 46
    Points
    46
    Par défaut
    Pas possible, c'est vite dit.
    J'ai déjà fait ce genre de chose..
    Exemple, sur ce site:
    http://www.livexscores.com/?p=0&sport=tennis
    Les scores sont remplis en ajax. On me disait "tu n'arriveras donc pas à les récupérer !"
    Mais en fouillant la façon dont le div est rempli (merci firebug), j'ai fini par trouver l'url à parser:
    http://www.livexscores.com/allt.php?cas=0&sid=0

    Donc il ne faut pas dire qu'il est impossible de récupérer les données d'un site en ajax

    Quant à l'autorisation, oui, je l'ai.
    En plus c'est pour leur filer un gros paquet d'argent (j'aime bien travailler pour perdre des sous ) alors ils sont d'accord...
    Et puis, vu la taille de leur structure, une dizaine de millier de requêtes, ça sera indolore pour eux.

  19. #19
    Expert confirmé
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Points : 4 853
    Points
    4 853
    Par défaut
    Citation Envoyé par AIexis Voir le message
    Exemple, sur ce site:
    http://www.livexscores.com/?p=0&sport=tennis
    Les scores sont remplis en ajax.
    Non

    Une iframe est incluse dans cette page.
    Développeur | Zend Certified Engineer

    Étapes Pour mieux se servir du forum:
    1. Commencez par lire les cours et tutoriels ;
    2. Faites une recherche;
    3. Faites un post si rien trouvé dans les deux étapes précédentes en respectant les règles;

    Nix>_Rien n'est plus pratique que la théorie

  20. #20
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 103
    Points : 46
    Points
    46
    Par défaut
    Euh... non, c'est bel et bien un div
    <div id="cas" style="visibility:hidden;margin-top:-13px">Loading...</div>
    <div id="allzapasy">
    <br><b>Loading...</b></div>

    Les iframe sur cette page c'est juste des pubs.

Discussions similaires

  1. enregistrer une page web sous mysql
    Par sihamnet dans le forum Développement Web en Java
    Réponses: 3
    Dernier message: 10/07/2012, 17h35
  2. Réponses: 1
    Dernier message: 17/01/2011, 12h37
  3. Comment Enregistrer Une page WEB En VBA sous excel
    Par BEMI dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 28/05/2009, 23h15
  4. Enregistrer une page html sous vba
    Par scofild20 dans le forum Général VBA
    Réponses: 8
    Dernier message: 10/08/2007, 14h52
  5. enregistrer une page asp
    Par car dans le forum ASP
    Réponses: 5
    Dernier message: 17/08/2005, 09h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo