Webbrowser [Résolu]

Messages postés
3
Date d'inscription
jeudi 6 août 2009
Dernière intervention
2 décembre 2011
- - Dernière réponse : cs_cheyenne
Messages postés
693
Date d'inscription
samedi 18 mai 2002
Dernière intervention
17 avril 2017
- 2 déc. 2011 à 22:23
Bjr, debutant je voudrais effectuer un CTRL A puis un CTRL C sur un webbrowser a partir d'un bouton se trouvant sur une form . je veux simplement recuperer une page web via le presse-papier ( copier/coller ) pas le code juste le texte. Si autre solution je suis preneur avec un exemple ou des liens pour me guider. Merci a tous par avance pour votre aide .
Afficher la suite 

Votre réponse

15 réponses

Meilleure réponse
3
Merci
Salut,
Essaye comme ça:

 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        WebBrowser1.Navigate("www.google.fr")
End Sub
  Private Sub WebBrowser1_DocumentCompleted(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
        TextBox1.Multiline = True
        TextBox1.Text = WebBrowser1.Document.Body.OuterText
    End Sub



Cordialement


CF2i - Guadeloupe
Ingénierie Informatique

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 104 internautes ce mois-ci

Commenter la réponse de Utilisateur anonyme
Messages postés
17308
Date d'inscription
mercredi 2 janvier 2002
Dernière intervention
22 août 2018
0
Merci
Pas propre de venir squatter le presse-papier.

Il existe des moyens de récupérer du texte depuis une page Web, pourrais tu nous expliquer un peu le cadre de ton application ?

pourquoi devoir passer par un Webbrowser ?


Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
Commenter la réponse de Renfield
Messages postés
3
Date d'inscription
jeudi 6 août 2009
Dernière intervention
2 décembre 2011
0
Merci
bjr, je ne connais pas le html donc je suis partis sur la solution de recuperer la page web , de la coller dans le presse-papier puis dans une variable string() . je recupere les infos en pointant sur l'index de ma variable .
puis je la traite dans mon programme. Ca marche bien sauf que je voudrais automatiser le copier/coller en appuyant sur un bouton. Maintenant s'il existe une autre solution ou la posibilite de passer par IE je suis preneur.
je suis sous VB2010
merci.
Commenter la réponse de RDP50
Messages postés
17308
Date d'inscription
mercredi 2 janvier 2002
Dernière intervention
22 août 2018
0
Merci
quelle est la finalité de la chose ?

extraire automatiqueent du texte d'une page web ?

suffit de télécharger la page en question, via une XML
voir HttpWebRequest
par exemple

Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
Commenter la réponse de Renfield
Messages postés
693
Date d'inscription
samedi 18 mai 2002
Dernière intervention
17 avril 2017
0
Merci
Bonjour active,

A condition que le TextBox ne soit pas limité à 32 Ko comme en VB6, sinon prendre un RichTextBox.
RDP50 ne nous a pas indiqué le poids de la page téléchargée.
WebBrowser1.Document.Body.OuterText, ok, si il ne fait pas un split sur un type de balise ou une recherche de texte entre deux balises !

Pour récupérer le code source, en VB6 je pratique ainsi (de mémoire):
' cocher d'abord la référence Microsof winHTTP Services

' à déclarer avant utilisation
Set winReq = New WinHttp.WinHttpRequest

With winReq
   .Abort
   .Open "GET", url, False
   .Send
             
    Do: DoEvents: Loop Until .WaitForResponse = True

   If .Status = 200 Then
      strDATA = .ResponseText
   Else
      MsgBox winReq.Status
   End If
End With

' dans Unload
Set winReq = Nothing

A adapter en VB20010...

J'utilise également Inet qui s'avère parfois plus rapide.


Cheyenne
Commenter la réponse de cs_cheyenne
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
0
Merci
Bonjour cheyenne,

A condition que le TextBox ne soit pas limité à 32 Ko comme en VB6


Je ne vais pas critiquer cette sage intervention (car il vaut en effet mieux utiliser une RichTextBox dans ce cas). Mais il faut que tu saches qu'elle n'est pas si "exacte" que cela et que l'on peut très largement dépasser cette limite , en s'y prenant astucieusement.
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Commenter la réponse de ucfoutu
Messages postés
693
Date d'inscription
samedi 18 mai 2002
Dernière intervention
17 avril 2017
0
Merci
Bonsoir ucfoutu,

Donc, 'astucieusment' on peut dépasser la limite des 32 Ko ?
Voudrais-tu bien, stp, développer le sujet. Merci d'avance.

Cordialement,

Cheyenne
Commenter la réponse de cs_cheyenne
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
0
Merci
Allez !
On commence par une démo méthode "rapide" :
Dim i As Long, coco As Long, base As String
  Text1.Text = vbNullString 'on part à vide
  base = Space$(1000000)  ' pour un million de caractères
  coco = 1
  For i = 1 To 100000
    Mid$(base, coco) = Format$(i, "00000000")
    Mid$(base, coco + 8) = vbCrLf
    coco coco + 10 ' + 10 car vbcrlf 2 caractères
  Next
  Text1.SelText base  'et voilà ! 1000000 de caractères stockes --- vbcrlf 2 caractères, hein ...)
  MsgBox "alors ? on a combien de caractères ? ===>>> " & Len(Text1.Text)


Si tu veux du plus simple, mais plus lent, je fais aussi



____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Commenter la réponse de ucfoutu
Messages postés
693
Date d'inscription
samedi 18 mai 2002
Dernière intervention
17 avril 2017
0
Merci
Re,

Ben, oui, MAIS...

J'ai rajouté :
Text1.Text = base
Dim t() As String
t() = Split(Text1.Text, vbCrLf)
MsgBox UBound(t) & " " & Len(Text1.Text)

J'obtiens 6553 lignes et 65535, normal.

Si on a bien au départ une chaîne de 1000000 de caractères, n'apparaissent à l'arrivée que 6553 lignes que ce soit avec un TextBox ou un RichTextBox.
On reste donc limité pour visualiser la totalité des lignes.

Bonne soirée à toi,

Cheyenne
Commenter la réponse de cs_cheyenne
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
0
Merci
Tu confonds ce que peut contenir un contrôle avec autre chose, me semble-t-il
En l'occurrence, tu confonds avec la limite d'une variable String (celle que tu passes à ton split)
A re-méditer, donc ! car la relation de cause à effet n'est pas celle que tu crois, mais la limite d'une variable string !

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Commenter la réponse de ucfoutu
Messages postés
3
Date d'inscription
jeudi 6 août 2009
Dernière intervention
2 décembre 2011
0
Merci
Je vous remercie tous pour votre aide , je vais essayer la methode d'ACTIVE qui me convient le mieux pour l'instant.merci ACTIVE,RENFIELD,CHEYENNE et UCFOUTU pour votre aide. A+
Commenter la réponse de RDP50
0
Merci
Re:

Si tu n'as pas besoin d'afficher la page dans un webbrowser, en vb.net tu peux aussi utiliser le streamreader, qui est plus rapide.
Mais il t'affiche tout le HTML, c'est à toi de jouer avec split et les balises après...

        RichTextBox1.Text = New IO.StreamReader(Net.WebRequest.Create("http://www.google.fr").GetResponse.GetResponseStream).ReadToEnd



CF2i - Guadeloupe
Ingénierie Informatique
Commenter la réponse de Utilisateur anonyme
Messages postés
693
Date d'inscription
samedi 18 mai 2002
Dernière intervention
17 avril 2017
0
Merci
> ucfoutu

Non il ne me semble pas confondre les deux, je fais bien la distinction !
J'ai bien 'splité' le contenu du TextBox et non la variable String.

Toujours est-il que le contrôle reste limité dans sa capacité d'affichage d'un grand nombre de lignes.

@+ Cheyenne
Commenter la réponse de cs_cheyenne
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
0
Merci
J'ai bien 'splité' le contenu du TextBox et non la variable String.

et c'est quoi, ce "contenu", sinon une string ?
Toujours est-il que le contrôle reste limité dans sa capacité d'affichage d'un grand nombre de lignes.

Non plus ! et je m'en sers assez souvent, dans certaines situations

Mais on s'écarte du sujet. J'arrête donc ici.
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Commenter la réponse de ucfoutu
Messages postés
693
Date d'inscription
samedi 18 mai 2002
Dernière intervention
17 avril 2017
0
Merci
> ucfoutu

Oui, bien sûr que le contenu est la String 'base', mais...
J'arrête là aussi, car tu as raison, nous nous écartons du sujet.

Au plaisir de 'rebavarder' avec toi.

Bon week-end,

Cheyenne
Commenter la réponse de cs_cheyenne

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.