Page 2 sur 3

Re: Comment enregistrer une page internet compléte???

Publié : jeu. 31/déc./2015 12:07
par JohnJohnsonSHERMAN
Merci ! J'espére y arriver... impossible n'est pas Basic... ;)

Re: Comment enregistrer une page internet compléte???

Publié : jeu. 31/déc./2015 15:49
par ChaudEf
Bonjour
je crois avoir compris ce que tu veux faire, tu veux non seulement recuperer la page elle meme mais aussi tout les fichiers associes, css js et images.
Si tu connais le language php, je pense que ce serait plus facile de faire cela en php, au cas ou tu peux te debrouiller un petit espace de stockage.
Sinon, il faudrait telecharger la page que tu recherche avec receivehttp, et ensuite la lire ligne par ligne et extraire tous les <link rel=, et tous les <img src= etc, les telechrarger a leur tour dans un dossier, et enfin reecrire tout les liens de ta page pour la relire en offline.
Bref c'est assez complique, mais encore une fois je crois qu'un php il y a une lib toute prete qui gere ca.

Bonne chance et mets nous au courant de l'avancement de ton projet.

Re: Comment enregistrer une page internet compléte???

Publié : jeu. 31/déc./2015 15:58
par Marc56
C'est effectivement ce qu'il faut faire:

1. Télécharger la page de base
2. Analyser tous les liens (images etc) et les remplacer par des liens locaux

La page enregistrée ne ressemblera pas forcément car s'il y a du javascript, du flash etc... 8O :?
(Sans oublier comme on l'a dit que si la page du serveur est une page dynamique (ex: PHP) le serveur n'envoie que le produit final de la génération.)

Cela dit dans le principe, il y a tous les outils dans PB lui-même ReceiveHTTPFile() et les outils de la bibliothèque String pour travailler sur le texte.

:wink:

Re: Comment enregistrer une page internet compléte???

Publié : jeu. 31/déc./2015 16:01
par ChaudEf
Je repete que c'est un travail de monstre :x :x
En fait la verite est que c'est encore plus complique que cela, car des fois il y a des pages liees qui appelle elles meme des autres pages, et ces pages la appellent des images etc et on n'en finiy plus.
J'ai remarque que meme les aspirateurs de sites bugent des fois sur ces points la.
En plus il y a des sites qui utilisent des redirections 404 et le receive risque de planter.
Prend tout ca en compte avant de commencer :!:

Re: Comment enregistrer une page internet compléte???

Publié : jeu. 31/déc./2015 16:03
par djes
WGet me semble être la meilleure solution. Pourquoi réinventer la roue ?

Re: Comment enregistrer une page internet compléte???

Publié : jeu. 31/déc./2015 16:05
par ChaudEf
WGet fait tout cela?

Re: Comment enregistrer une page internet compléte???

Publié : jeu. 31/déc./2015 16:10
par Marc56
Si le but de JohnJohnsonSHERMAN est juste de télécharger une page, alors oui, wget le fait (et il existe même d'autres outils qui font encore plus), mais maintenant si son but est d'apprendre à programmer alors c'est un chalenge intéressant. :wink:

Re: Comment enregistrer une page internet compléte???

Publié : jeu. 31/déc./2015 17:20
par Ar-S
Tu peux aussi regarder du coté de WebGadget() il te permettra de voir la source facilement (donc ensuite de chopper les url des images pour les récupérer). Une fois les replacestring effectués pour du local, tu tests sur un autre (ou le même) webgadget.
Aspirer une page c'est pas un soucis mais aspirer un site entier c'est déjà plus de taf.

Re: Comment enregistrer une page internet compléte???

Publié : mer. 20/janv./2016 15:25
par JohnJohnsonSHERMAN
Je vous avoue avoir un peu perdu de vue ce probléme... depuis, j´ai fini mon Shermavigator, avec toujours sa fonction "enregistrer" vide..
J´ai essayé d´utiliser wget, mais je ne sais pas vraiement l´utiliser donc j´ai laissé tomber :(
Autrement, je réussis a rrécupérer le code source avec le webgadget, j´utilise d´ailleurs ce moyen pour télécharger une page, la fonction ReceiveHttpFile ne fonctionnant pas pour moi (quelque soit l´adresse que je lui donne elle échoue toujours a dl une page ou un fichier). Cela dit, essayer de reconnaitre les css et les images incluses dans les codes sources des pages a télécharger est sans doute trés compliqué, de toute facon il ne me serait pas possible de les téléchrger par la suite a cause de Receivehttpfile...
Je pense que wget peut etre trés prometeur a moins qu´une autre solution existe... je me demande si il n´existe pas déja une fonction ou un code tout fait pour télécharger une page web dans sa totalité, comme le fait un navigateur classique?

Je précise que je ne m´y connait pas du tout en langages internet (html, php,css...)

Re: Comment enregistrer une page internet compléte???

Publié : mer. 20/janv./2016 16:41
par TazNormand
Sans vouloir réinventer la roue, HTTrack fait très bien ce boulot.

Pour info, la présence du fichier "robots.txt", ainsi que les droits sur les dossiers/sous-dossiers empêche la recopie d'un site, sans parler du .htaccess.

Bon courage

Re: Comment enregistrer une page internet compléte???

Publié : mer. 20/janv./2016 16:48
par Ar-S
Pour recupe le css c'est pas plus compliquer que pour une image.
Nous sommes sur le site http://www.purebasic.fr/french/
en regardant le code source de la page ou nous sommes, dans les balises META en début de code tu peux voir :

Code : Tout sélectionner

<link rel="stylesheet" href="./styles/subsilverPlus/theme/stylesheet.css" type="text/css" />
ce qui signifie que le fichier CSS se trouve ici :
http://www.purebasic.fr/french/styles/s ... esheet.css

Aprés ton soucis de ReceiveHTTPFilen'est pas normal

Essaye ce code, il DOIT télécharger le fichier css de cette page sous le nom monfichier.css

Code : Tout sélectionner

InitNetwork()

  NomDeFichier$ = SaveFileRequester("Enregistrer fichier", "monfichier.css", "", 0)

  If ReceiveHTTPFile("http://www.purebasic.fr/french/styles/subsilverPlus/theme/stylesheet.css", NomDeFichier$)
    Debug "Succès"
  Else
    Debug "Echec"
  EndIf

Re: Comment enregistrer une page internet compléte???

Publié : mer. 20/janv./2016 20:16
par djes
C'est très compliqué, d'autant plus qu'avec les sites modernes, le javascript sert à télécharger des tas de fichiers de façon dynamique. Ainsi, les noms des fichiers qui, avant, étaient codés en dur dans le source d'une page, sont calculés. Ce n'est pas un petit code fait en quelques jours qui arrivera à interpréter ce genre de page, et tout ce qu'elle contient, comme le ferait un navigateur. C'est pour ça que je dis qu'il vaut mieux utiliser un outil complet existant et développé dans ce but.

Sinon, le webgadget est une solution, il est possible d'obtenir plus que les fonctions classiques, mais c'est assez dur à utiliser (voir le forum anglais).

Re: Comment enregistrer une page internet compléte???

Publié : ven. 22/janv./2016 18:21
par JohnJohnsonSHERMAN
Vous avez bien raison et je suis tout a fait d´accrd, je ne veux pas en effet m´embéter a coder un truc hyper compliqué et qui ne fonctionne pas toujours, plutot utiliser un truc déja fait... (flemmard va!!)
De plus (et je sais c´est difficile a croire), ReceiveHTTPFile() ne m´a jamais retourné autre chose qu´un échec, sauf avec le lien directement fourni dans l´exemple de pb :(
Don je vais me tourner vers un truc externe.

Re: Comment enregistrer une page internet compléte???

Publié : ven. 22/janv./2016 19:35
par Ar-S
Tu as essayé mon code ?

Re: Comment enregistrer une page internet compléte???

Publié : sam. 23/janv./2016 10:39
par Mesa
Microsoft a inventé le format mht (mhtml) pour cela. Ça donne un seul fichier qui intègre tout.
Je ne sais pas si ça marche avec tous les sites mais ce code trouvé quelque part sur un forum permet d'enregistrer en mht:
http://www.forums.purebasic.com/english ... =7&t=10149


Etrangement, firefox ne sait pas ouvrir ces fichiers, il suffit de lui ajouter un addon pour ça https://addons.mozilla.org/fr/firefox/a ... ve-format/

Le plus simple est d'ajouter la fonction "mht" à firefox avec cet addon:
https://addons.mozilla.org/fr/firefox/addon/unmht/

M.