Comment enregistrer une page internet compléte???

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
JohnJohnsonSHERMAN
Messages : 648
Inscription : dim. 13/déc./2015 11:05
Localisation : Allez, cherche...
Contact :

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

Message par JohnJohnsonSHERMAN »

Merci ! J'espére y arriver... impossible n'est pas Basic... ;)
"Le bug se situe entre la chaise et le clavier"
Votre expert national en bogage et segfaults.

CPU : AMD A8 Quad core - RAM 8Gb - HDD 2To
  • Windows 10 x64 - PB 5.61 x64
  • Linux Ubuntu 16.04 LTS x64 (dual boot) - PB pas encore réinstallé
Avatar de l’utilisateur
ChaudEf
Messages : 179
Inscription : dim. 27/déc./2015 17:02
Localisation : Strasbourg

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

Message 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.
Windows 10 x64 -- Purebasic 5.70 LTS x86
Marc56
Messages : 2198
Inscription : sam. 08/févr./2014 15:19

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

Message 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:
Avatar de l’utilisateur
ChaudEf
Messages : 179
Inscription : dim. 27/déc./2015 17:02
Localisation : Strasbourg

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

Message 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 :!:
Windows 10 x64 -- Purebasic 5.70 LTS x86
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

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

Message par djes »

WGet me semble être la meilleure solution. Pourquoi réinventer la roue ?
Avatar de l’utilisateur
ChaudEf
Messages : 179
Inscription : dim. 27/déc./2015 17:02
Localisation : Strasbourg

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

Message par ChaudEf »

WGet fait tout cela?
Windows 10 x64 -- Purebasic 5.70 LTS x86
Marc56
Messages : 2198
Inscription : sam. 08/févr./2014 15:19

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

Message 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:
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

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

Message 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.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
JohnJohnsonSHERMAN
Messages : 648
Inscription : dim. 13/déc./2015 11:05
Localisation : Allez, cherche...
Contact :

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

Message 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...)
"Le bug se situe entre la chaise et le clavier"
Votre expert national en bogage et segfaults.

CPU : AMD A8 Quad core - RAM 8Gb - HDD 2To
  • Windows 10 x64 - PB 5.61 x64
  • Linux Ubuntu 16.04 LTS x64 (dual boot) - PB pas encore réinstallé
Avatar de l’utilisateur
TazNormand
Messages : 1297
Inscription : ven. 27/oct./2006 12:19
Localisation : Calvados (14)

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

Message 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
Image
Image
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

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

Message 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
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

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

Message 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).
Avatar de l’utilisateur
JohnJohnsonSHERMAN
Messages : 648
Inscription : dim. 13/déc./2015 11:05
Localisation : Allez, cherche...
Contact :

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

Message 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.
"Le bug se situe entre la chaise et le clavier"
Votre expert national en bogage et segfaults.

CPU : AMD A8 Quad core - RAM 8Gb - HDD 2To
  • Windows 10 x64 - PB 5.61 x64
  • Linux Ubuntu 16.04 LTS x64 (dual boot) - PB pas encore réinstallé
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

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

Message par Ar-S »

Tu as essayé mon code ?
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Mesa
Messages : 1126
Inscription : mer. 14/sept./2011 16:59

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

Message 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.
Répondre