Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2129 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Comment récuperer des pages web...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Comment récuperer des pages web...

n°774818
bigbig
Posté le 23-06-2004 à 20:15:14  profilanswer
 

Bonjour à tous,
 
Sur un site web, je voudrais récupérer pas mal de page (2000 au moins !)pour concerver les données qui s'y trouvent (Car à la prochaine refonte du site, elle risque de ne plus etre accessibles).
 
Il y a des logiciel tel que MemoWeb ou autres qui permettent de rappatrier un site.
Mais celà ne marche par sur ce site pour la simple raison que ces pages ne sont pas accessible par des liens sur ce site, mais uniquement en entrant les adresses des pages concernées.
Ainsi, de tel logiciel ne trouvant pas de liens sur ces pages ne rappatrie jamais celle-ci.
 
Je connais bien sur les adresse web de chaque page (ce ne sont que des n° à changer dans l'url pour passer de l'une à l'autre).
 
Ainsi, je voudrais rappatrier et sauvegarder en automatique ces diverses pages. (Un fichier html+ images éventuelles par pages)
 
Comment faire ?
Il s'agit de pages php (j'y connais rien à ce sujet)
C'est principalement pour récupérer du text.
Par la suite, sans doute aussi certaine images...
Sous Visual Basic 5.0 ou Excel VBA
 
 
Merci de vos conseils, programmes, astuces, fonctions, adresse web...  
qui pourrais m'aider...

mood
Publicité
Posté le 23-06-2004 à 20:15:14  profilanswer
 

n°774826
Arjuna
Aircraft Ident.: F-MBSD
Posté le 23-06-2004 à 20:23:15  profilanswer
 

Laisse-moi 5 minutes, je teste ça en VBS et j'arrive ;)

n°774841
Arjuna
Aircraft Ident.: F-MBSD
Posté le 23-06-2004 à 20:36:52  profilanswer
 

Dieu a fini :)
 


on error resume next
' Au cas ou une page n'existe pas, on évite de planter c'est mieu...
 
const genericURL = "http://forum.hardware.fr/hardwarefr/Programmation/sujet-5383*-1.htm"
const genericFIC = "sujet-5383*-1.htm"
 
dim i
dim fso
dim fil
dim inet
 
set fso = CreateObject("Scripting.FileSystemObject" )
set inet = CreateObject("InternetExplorer.Application" )  
inet.visible = false
 
for i = 0 to 9
 inet.Navigate (Replace(genericURL, "*", cstr(i)))
 Do While Not inet.ReadyState = 4  
  ' Ne rien faire
 Loop  
 set fil = fso.CreateTextFile("c:\" & Replace(genericFIC, "*", cstr(i)))
 fil.Write(inet.document.body.innerHTML)
 fil.Close
next
 
msgbox("fini" )


 
Je te laisse te démerder pour récupérer les feuilles de style et autres conneries (scripts, etc)
 
PS: Pour récupérer des images ça sera moins aisé. J'avais fait un aspirateur de sites de c*l mal protégé, mais j'ai paumé le code, alors je peux pas de le montrer, et contrairement à ce bout de code que j'a i pu pondre les yeux fermés, je me souviens que j'avais galèré, et j'avais fait ça en C# de toute façon :)


Message édité par Arjuna le 23-06-2004 à 20:45:39
n°774845
Arjuna
Aircraft Ident.: F-MBSD
Posté le 23-06-2004 à 20:39:39  profilanswer
 

PS: tu n'as besoin d'aucun soft, juste un PC sous Win95 ou ultérieur avec IE 4.0 minimum.
 
Tu colles ce code dans un fichier "Arjuna est la plus belle des déesses.vbs" (en plus ça rhyme) et t'as plus qu'à double cliquer dessus pour télécharger 10 topics de ce forum. Je le laisse l'adater pour répondre à tes besoins.

n°774859
bigbig
Posté le 23-06-2004 à 20:51:45  profilanswer
 

Merci, ça marche super bien !
Et c'est tout simple.
 
Et tu sais comment récuper une image ou un fichier à partir de l'url ?
 
Merci

n°774860
Arjuna
Aircraft Ident.: F-MBSD
Posté le 23-06-2004 à 20:53:01  profilanswer
 

Il te faudra passer par un prog compilé et utiliser une lib de sock.
 
Je te cherche un lien vers un programme que j'ai fait et qui télécharge des fichiers binaires.

n°774862
Arjuna
Aircraft Ident.: F-MBSD
Posté le 23-06-2004 à 20:54:07  profilanswer
 
n°774877
bigbig
Posté le 23-06-2004 à 21:10:24  profilanswer
 

Merci pour ces infos.
Là ça va être plus long à tout regarder...
 
A+

n°775011
bigbig
Posté le 23-06-2004 à 23:35:11  profilanswer
 

ReBonsoir,
 
J'ai modifier un petit peu le 1er code que tu m'as donné.
Il se trouve maintenant dans une Sub appelé avec les paramètres : Url et Fichier ce qui me simplifit l'ajout au reste de mon programme. Je l'utilise dans Excel.
 
Or j'ai un problème au niveau des ressources...
En faite, lorsue j'appel une centaine de fois cette sub pour sauver une centaine de pages web différentes, les ressources baisse beaucoup trop. Y a un truc qui reste en mémoire...
Par contre, il suffit que je ferme manuellement toutes les fenetre d'internet explorer pour que les resources soit libérées.
 
Y reste quoi en mémoire ? Comment le libéré ?
 
Merci, A+
 
Sub SauvePage(Url As String, Fichier As String)
 
'- Pour éviter de planter en cas d'erreur -
On Error Resume Next
 
Dim fso
Dim fil
Dim inet
 
Set fso = CreateObject("Scripting.FileSystemObject" )
Set inet = CreateObject("InternetExplorer.Application" )
 
'- N'affiche pas la fenêtre -
inet.Visible = False
 
'- Chargement de la page web -
inet.Navigate (Url)
'- Attente de fin de chargement -
Do While Not inet.ReadyState = 4
Loop
 
'- Sauvegarde de la page dans un fichier -
Set fil = fso.CreateTextFile(Fichier)
fil.Write (inet.document.body.innerHTML)
fil.Close
 
fil.Quit
Set fil = Nothing
 
inet.Quit
Set inet = Nothing
 
fso.Quit
Set fso = Nothing
 
End Sub

n°775354
Arjuna
Aircraft Ident.: F-MBSD
Posté le 24-06-2004 à 10:25:16  profilanswer
 

inet.close (ou .quit je sais plus)
 
Mais surtout, fout la création de ton inet en dehors du sub, pas besoin de créer autant de inet que de page chargées, le même que tu réutilises à chaque page suffit amplement ;)

mood
Publicité
Posté le 24-06-2004 à 10:25:16  profilanswer
 

n°776114
bigbig
Posté le 24-06-2004 à 15:13:12  profilanswer
 

Bonjour,
 
Merci pour ta réponse.
J'ai essayer avec inet.close et avec inet.quit (d'après l'aide ce serait .quit à utiliser)
Mais celà ne change rien, les ressources sont consommées apparament par Internet Explorer (quand je le ferme complètement à la main, les ressources sont libérées)
 
J'ai aussi essayer le CreatObjet pour inet or de cette sub afin de n'y passer qu'une seule fois mais alors, c'est comme si le script ne trouve pas ou pert la connection et reste bloqué dans la boucle Do loop. Peut etre était ce du au web à ce moment, mais nombreux essai et toujours comme celà.
 
Par contre, lorsque je ne fais qu'une seule sub sans en appeler d'autre et en faisant une seule fois le set inet, là ça marche impec (Mais pas pratique du tout à programmer, le programme n'est pas lisible et des doublons, donc bof !) et les ressources non consommé même pour 2000 fichiers ! (Dans les autres cas, ressources à 0% avant le 200ème fichiers)
 
Donc apparement problème entre la déclaration set inet dans une autre sub et lors de son utilisation dans la sub...
y a t il un truc à mettre pour déclarer le set inet globalement pour toutes les sub ?
 
Sinon, j'ai vu aussi sur d'autres site que inet, marchais mal parfois... et qu'en général, il vaut mieux utiliser autre chose... mais alors, c'est beaucoup plus compliqué, sans doute comme ton autre code que j'ai pas encore regardé.
 
A+

n°776121
Arjuna
Aircraft Ident.: F-MBSD
Posté le 24-06-2004 à 15:16:11  profilanswer
 

Dim inet  
Set inet = CreateObject("InternetExplorer.Application" )  
'- N'affiche pas la fenêtre -  
inet.Visible = False  
 
SauvePage ... (plusieurs fois)
 
inet.Quit  
Set inet = Nothing  
 
' *-*-*-*-*-*-*-*
 
Sub SauvePage(Url As String, Fichier As String)  
 
'- Pour éviter de planter en cas d'erreur -  
On Error Resume Next  
   
Dim fso  
Dim fil  
 
Set fso = CreateObject("Scripting.FileSystemObject" )  
 
 
'- Chargement de la page web -  
inet.Navigate (Url)  
'- Attente de fin de chargement -  
Do While Not inet.ReadyState = 4  
Loop  
 
'- Sauvegarde de la page dans un fichier -  
Set fil = fso.CreateTextFile(Fichier)  
fil.Write (inet.document.body.innerHTML)  
fil.Close  
 
Set fil = Nothing  
Set fso = Nothing  
 
End Sub  

n°960805
bouchrabou​chra
Posté le 24-01-2005 à 15:37:03  profilanswer
 

Bonjour,
moi aussi j'ai un problème similaire à celui-ci, en fait je voudrai me connecter à un site et ensuite envoyer une requete qui va me permettre d'extraire des données. Savez-vous comment faire?
merci


---------------
bou
n°960910
-Farenheit​-
Posté le 24-01-2005 à 17:19:14  profilanswer
 

Arjuna a écrit :

PS: tu n'as besoin d'aucun soft, juste un PC sous Win95 ou ultérieur avec IE 4.0 minimum.
 
Tu colles ce code dans un fichier "Arjuna est la plus belle des déesses.vbs" (en plus ça rhyme) et t'as plus qu'à double cliquer dessus pour télécharger 10 topics de ce forum. Je le laisse l'adater pour répondre à tes besoins.


 
:lol:  
 
Déesse Arjuna,
Je vous salue bien bas,
Par ces lignes scripté,
Vous m'avez bluffé   ;)  
 
 
Plus simplement, je trouve ta solution trés astucieuse.
 
Pour bouchrabouchra, si les données qu tu souhaite récupérer sont des pages web, tu as la solution juste au-dessus.


Message édité par -Farenheit- le 24-01-2005 à 17:19:43
n°960969
bouchrabou​chra
Posté le 24-01-2005 à 18:24:33  profilanswer
 

regarde dans l'adresse suivante pour mieux comprendre:
http://69.159.241.96/alliancewebse [...] ysFilter=1


---------------
bou
n°1346045
tcoll
Posté le 13-04-2006 à 14:24:20  profilanswer
 

Bonjour,
 
j'ai reutilisé le 1er script pour telecharger un fichier .txt depuis un serveur local.
 
Tout se passe bien, mais dans le fichier qui en resulte <PRE>... </PRE> à été rajouté:
<PRE>texte
test
texte
.....
</PRE>
 
Comment ne pas avoir cette incertion?
 
De plus, si le fichier n'existe pas, il me recopie la page d'erreur 404. est il possible plustôt de generer une erreur afin de ne pas traiter de fausses information?


Message édité par tcoll le 13-04-2006 à 14:34:01

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Comment récuperer des pages web...

 

Sujets relatifs
recuperer des variables de session lors du timeout par un listenerRecuperer une chaine de caractere venant d'un script PHP
Récupérer une page ASP en C++Récupérer l'URL du dossier parent en relatif
menu déroulant pour toute les pagesRecuperer un net send ?
[Delphi] Recuperer resultat d'une requeterecuperer une variable javascript dans du code php entre 2 pages
[SQL Server] Récupérer le resultat d'une requête en pages 
Plus de sujets relatifs à : Comment récuperer des pages web...


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR