bonjour a tous
voila une toute petite fonction qui peut avoir bien des utilités
elle récupère le code source d'une page sur le net au format html ou format texte
voila le code pour la fonction
veuillez noter que la variable "au_format_text" dans la fonction est "OPTIONAL" c'est cette variable qui nous servira a déterminer le format de sortie lors de son appel
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 Option Explicit Dim Destination As String 'variable pour le chemin complet du fichier de destination Dim l_URL As String ' variable pour le lien de la page html Dim Lapage_en_HTML 'variable pour l'object "Microsoft.XMLHTTP"( l'object XML) Dim sourcetext As String ' varaible pour le texte de sortie au format texte Dim texte As String 'variable pour le texte a découpé par les ""chr(13)"" Dim i As Long ' variable pour le decompte des lignes dans le texte de sortie en html ou texte Public Function GetCodeSource(sURL, Optional au_format_text As Boolean = "false") Set Lapage_en_HTML = CreateObject("Microsoft.XMLHTTP") 'instancie l'object Lapage_en_HTML.Open "GET", sURL 'ouvre l'url dans l'object Lapage_en_HTML.Send Do: DoEvents: Loop While Lapage_en_HTML.ReadyState <> 4 'attendre que la page soit chargée 'le code source est dans """"Lapage_en_HTML.ResponseText"""" 'on créé un object "htmlfile" With CreateObject("htmlfile") 'on y ecrit le codesource complet .Write Lapage_en_HTML.ResponseText 'Ici on garde que le texte au format texte( sans les balises) sourcetext = .body.innerText End With 'selon si la variable "au_format_text" est a true ou falsele texte de sortie sera en html ou texte GetCodeSource = IIf(au_format_text, sourcetext, Lapage_en_HTML.ResponseText) sourcetext = "" End Function
et voila un exemple d'utilisation :
nous allons enregistrer le code source dans un fichier texte sur le bureau
avec les balises
ou sans les balise(format texte )
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 Sub test1() l_URL = "http://www.programme-tv.net/programme/programme-tnt.html" 'la variable l_URL contient le lien de la page html que l'on veux récupérer Destination = "C:\users\" & Application.UserName & "\Desktop\code-source-de-lapage.txt" 'la variable destination contient le chemin complet du fichier de destination texte = GetCodeSource(l_URL) 'avec les balises(format html) Open Destination For Output As #1 'ouverture du nouveau fichier et ecriture de chaque ligne presente dans le texte For i = 0 To UBound(Split(texte, Chr(13))) Print #1, Split(texte, Chr(13))(i) Next 'fermeture du fichier après écriture Close #1 End Sub
bien sur le lien de la page est a renseigner ici:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 Sub test2() l_URL = "http://www.programme-tv.net/programme/programme-tnt.html" 'la variable l_URL contient le lien de la page html que l'on veux récupérer Destination = "C:\users\" & Application.UserName & "\Desktop\code-source-de-lapage.txt" 'la variable destination contient le chemin complet du fichier de destination texte = GetCodeSource(l_URL, True) 'sans les balises(format texte) Open Destination For Output As #1 'ouverture du nouveau fichier et ecriture de chaque ligne presente dans le texte For i = 0 To UBound(Split(texte, Chr(13))) Print #1, Split(texte, Chr(13))(i) Next 'fermeture du fichier apres ecriture Close #1 End Sub
voila elle fonctionne parfaitement bien et pour une fois le code est propre et commenté
Code : Sélectionner tout - Visualiser dans une fenêtre à part l_URL = "http://www.programme-tv.net/programme/programme-tnt.html"
qu'en pensez vous ?
Partager