Récupérer le contenu d'une page web

Herve_be Messages postés 1015 Date d'inscription mercredi 4 août 2010 Statut Membre Dernière intervention 10 mars 2024 - 5 janv. 2020 à 10:36
Notpa Messages postés 125 Date d'inscription dimanche 13 janvier 2019 Statut Membre Dernière intervention 8 janvier 2021 - 7 janv. 2020 à 20:49
Bonjour,
Si j'affiche une page web dans mon navigateur, que je sélectionne tout, que je copie dans le presse papier et colle dans une textbox je peux lire et analyser le contenu.
Exemple de code source
<td>Chloride</td><td>19508 mg/l</td><td>19481 mg/l</td><td>+27.30 mg/l</td>

si je copie le résultat affiché dans le presse papier j'obtiens
Chloride(9)19508 mg/l(9)19481 mg/l(9)+27.30 mg/l
les (9) étant des tabulations Chr$(9) càd des séparateurs qui me permettent de décortiquer le contenu

Je voudrais faire la même chose sans devoir copier/coller, j'ai essayé comme ceci
WebBrowser.Navigate ("https://lab.atiaquaristik.com/share/65e040aec9b375e95c8e")
Page.Text = WebBrowser.Document.Body.InnerText

résultat
Chloride19508 mg/l19481 mg/l+27.30 mg/l
c'est-à-dire que je n'ai aucun séparateur : comment obtenir la même chose qu'un copier/coller ?

9 réponses

vb95 Messages postés 3468 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 30 mars 2024 168
5 janv. 2020 à 13:52
Bonjour
Teste ceci à tout hasard
Il y a longtemps que je ne fais plus de VB6
WebBrowser.Navigate ("https://lab.atiaquaristik.com/share/65e040aec9b375e95c8e")
Page.Text = WebBrowser.Document.documentElement.outerHTML

0
Herve_be Messages postés 1015 Date d'inscription mercredi 4 août 2010 Statut Membre Dernière intervention 10 mars 2024 2
5 janv. 2020 à 16:49
Là je n'ai plus du tout les données qui m'intéressent, seulement le code html qui devrait générer les données.

J'ai essayé aussi de simuler les touches Ctrl+A Ctrl+C mais le presse papier est vide, voici ce code
Clipboard.Clear
WebBrowser.Navigate ("https://lab.atiaquaristik.com/share/65e040aec9b375e95c8e")
WebBrowser.SetFocus
keybd_event VK_CONTROL, 0, 0, 0
DoEvents
keybd_event VK_A, 1, 0, 0
DoEvents
keybd_event VK_CONTROL, 0, 0, 0
DoEvents
keybd_event VK_C, 1, 0, 0
DoEvents
keybd_event VK_CONTROL, 0, KEYEVENTF_KEYUP, 0
DoEvents
Page.Text = Clipboard.GetText
0
vb95 Messages postés 3468 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 30 mars 2024 168
Modifié le 5 janv. 2020 à 18:11
bonjour !
A voir : https://codes-sources.commentcamarche.net/forum/affich-1067255-sendkey-webbrowser
A tout hasard avec
Clipboard.Clear
WebBrowser.Navigate ("https://lab.atiaquaristik.com/share/65e040aec9b375e95c8e")
WebBrowser.SetFocus
SendKeys "^A"  ' Ctrl A
DoEvents
SendKeys "^C"  ' Ctrl C
DoEvents
Page.Text = Clipboard.GetText


0
Herve_be Messages postés 1015 Date d'inscription mercredi 4 août 2010 Statut Membre Dernière intervention 10 mars 2024 2
6 janv. 2020 à 12:12
Merci mais j'ai compris pourquoi le presse papier est vide avec mon dernier exemple :
il faut attendre que WebBrowser.Navigate soit terminé !
Private Sub WebBrowser_NavigateComplete2(ByVal pDisp As Object, URL As Variant)
    Imported = True
End Sub
...
WebBrowser.Navigate ("https://www.triton-lab.de/en/showroom/icp-oes/96461")
Imported = False
Do
    DoEvents
Loop Until Imported
Là c'est bon, le presse-papier contient bien le texte de la page telle que je la vois et je peux la décoder.


Mais j'ai un autre problème :
la page web est une analyse venant d'un laboratoire, avec certains ça fonctionne très bien
mais avec celui-ci https://www.triton-lab.de/en/showroom/icp-oes/96461 j'ai le message ci-dessous que je n'ai pas quand je consulte la page avec un navigateur;
que je réponde oui ou non le presse-papier est vide; une idée ?

0
Herve_be Messages postés 1015 Date d'inscription mercredi 4 août 2010 Statut Membre Dernière intervention 10 mars 2024 2
6 janv. 2020 à 13:24
J'ai oublié de dire que si je mets Webbrowser en mode Silent je n'ai plus le message mais le presse-papier est quand même vide.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Notpa Messages postés 125 Date d'inscription dimanche 13 janvier 2019 Statut Membre Dernière intervention 8 janvier 2021 1
7 janv. 2020 à 14:25
Bonjour Herve_be et tous mes vœux !

J'ai été confronté au même problème de script. Le problème est que le WebBrowser fait appel à IE, pas un autre navigateur. J'utilise FireFox, et j'avais le même souci. J'ai donc utilisé une autre méthode qui fonctionne avec tous les navigateurs. Mon programme lit une page Web, crée un fichier URL.TXT que je dois modifier pour 2 raisons :
1 - les fins de lignes sont incomplètes (LF et non CRLF)
2 - les caractères spéciaux ne sont pas traduits
Mon programme lit le fichier URL.TXT et crée CRLF.TXT. Après, c'est à toi de voir comment traiter ce dernier fichier (mon programme définitif (ici, c'est un extrait) lit ligne par ligne et recherche ce dont j'ai besoin.

Dans un nouveau projet, créer un module BAS :
Option Explicit
Global sURL As String
Global sfilename As String
Global bRet As Boolean
Global zone As String
Declare Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" (ByVal pCaller As Long, ByVal szUrl As String, ByVal szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long
Function DownloadPage(ByVal url As String, ByVal FileName As String) As Boolean
Dim done As Boolean
Dim value As Long

    On Error Resume Next
    
    done = True
    If Dir$(FileName) <> "" Then
        Kill FileName
    End If
    value = URLDownloadToFile(0, url, FileName, 0, 0)
    If Dir$(FileName) = "" Then
        done = False
    End If
    DownloadPage = done
End Function


Le projet ne contient qu'une form et un bouton : cmd_load:

Public Sub cmd_load_Click()

sURL = "https://codes-sources.commentcamarche.net/forum/affich-10099325-recuperer-le-contenu-d-une-page-web"
    sfilename = App.Path & "\url.txt"
    bRet = DownloadPage(sURL, sfilename)
    If bRet Then
        MsgBox "Téléchargement réussi."
    Else
        MsgBox "Erreur lors du télécharegement"
        Exit Sub
    End If
skip_load:


conv_lf:
Open App.Path & "\url.txt" For Input As #1
Open App.Path & "\crlf.txt" For Output As #2
zone = Input(LOF(1), #1)
zone = Replace$(zone, vbLf, vbCrLf)
zone = Replace(zone, "\u00e0", "à")
zone = Replace(zone, "\u00e2", "â")
zone = Replace(zone, "\u00e9", "é")
zone = Replace(zone, "\u00e8", "è")
zone = Replace(zone, "\u00ea", "ê")
zone = Replace(zone, "\u00eb", "ë")
zone = Replace(zone, "\u00f9", "ù")
zone = Replace(zone, "\u00e7", "ç")
zone = Replace(zone, "\u0026", "")
zone = Replace(zone, "\u2026", "")
zone = Replace(zone, "\u0027", "'")
zone = Replace(zone, "\u0153", Chr(156))
zone = Replace(zone, "\u00fb", "û")
zone = Replace(zone, "\u00f4", "ô")
zone = Replace(zone, "\u00ef", "ï")
zone = Replace(zone, "\u00f6", "ö")
zone = Replace(zone, "\u00fc", "ü")
zone = Replace(zone, "\u00e4", "ä")
zone = Replace(zone, "\u00f1", "ñ")
zone = Replace(zone, "\u00ee", "î")
zone = Replace(zone, "\u00c9", "É")
zone = Replace(zone, "\u00c0", "À")
zone = Replace(zone, "\u00ab", "!")
zone = Replace(zone, "\u00c0", "&")
zone = Replace(zone, "\u00c7", "Ç")
zone = Replace(zone, "\u00ed", "í")
zone = Replace(zone, "\u00e1", "á")
zone = Replace(zone, "\u00f3", "ó")
zone = Replace(zone, "\u00bf", "¿")
zone = Replace(zone, "\u0028", "(")
zone = Replace(zone, "\u0029", ")")
zone = Replace(zone, "amp;", "")

Print #2, zone
Close #2
Close #1
End Sub


Il ne te reste plus qu'à traiter le fichier CRLF.TXT comme il te convient.

En espérant t'avoir aidé...

Cordialement

Notpa
0
Herve_be Messages postés 1015 Date d'inscription mercredi 4 août 2010 Statut Membre Dernière intervention 10 mars 2024 2
7 janv. 2020 à 16:35
Bonjour,
Merci pour ton astuce qui me paraissait séduisante.
Cependant le résultat n'est pas ce que je vois à l'écran
mais le code source html qui permet d'afficher ce que je vois à l'écran.

Exemple de page que je voudrais capturer
https://lab.atiaquaristik.com/share/65e040aec9b375e95c8e
Résultat avec ton code
<script>
        var dataTable = {
            data: {"quality_index":[{"percentage_value":85,"name_de":"Mengenelemente","name_en":"Major elements","name_es":"Major elements","name_it":"Major elements","name_fr":"Major 

... j'abrège ...

<script src="https://lab.atiaquaristik.com/js/vendor/liquid-fill-gauge.min.js"></script>
<script src="https://lab.atiaquaristik.com/js/general.js?v=84"></script>
<script src="https://lab.atiaquaristik.com/js/frontend.js?v=84"></script>
</body>
</html>
Je voudrais obtenir ce que j'ai dans le presse papier en affichant la page dans un navigateur puis en faisant Ctrl+A Ctrl+C

Merci quand même
0
Notpa Messages postés 125 Date d'inscription dimanche 13 janvier 2019 Statut Membre Dernière intervention 8 janvier 2021 1
7 janv. 2020 à 17:41
Re,

Si j'ai bien compris, tu veux récupérer le contenu d'une page Web, format HTML ? Avec FireFox, si tu fais un clic droit sur la page et sélectionne Code source de la page, c'est ça que tu veux comme données ? Évidemment, ce n'est pas très automatisé !

Si ce n'est pas, ça, peux-tu m'expliquer ? Je suis peut-être parti sur une mauvaise piste.
0
Herve_be Messages postés 1015 Date d'inscription mercredi 4 août 2010 Statut Membre Dernière intervention 10 mars 2024 2
7 janv. 2020 à 19:02
Non, je veux récupérer ce que je vois à l'écran.
Par exemple sur la page que tu lis actuellement fais Ctrl+A puis Ctrl+C et colle le presse-papier dans le bloc notes, c'est ce que je veux obtenir.
Avec cette méthode copier/coller tout fonctionne parfaitement mais je voudrais obtenir la même chose en donnant l'URL de la page sans devoir la copier/coller.
0
Notpa Messages postés 125 Date d'inscription dimanche 13 janvier 2019 Statut Membre Dernière intervention 8 janvier 2021 1
7 janv. 2020 à 20:49
OK, je vois. C'est une capture d'écran pas en image, mais en format texte via une URL donnée.
Pas d'idée pour le moment. Si je trouve qq chose, je reviens.

Bonne chance !
0
Rejoignez-nous