Webbrowser

Résolu
RDP50 Messages postés 3 Date d'inscription jeudi 6 août 2009 Statut Membre Dernière intervention 2 décembre 2011 - 2 déc. 2011 à 06:28
cs_cheyenne Messages postés 693 Date d'inscription samedi 18 mai 2002 Statut Membre 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 .

15 réponses

Utilisateur anonyme
2 déc. 2011 à 11:55
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
3
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
2 déc. 2011 à 08:55
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
0
RDP50 Messages postés 3 Date d'inscription jeudi 6 août 2009 Statut Membre Dernière intervention 2 décembre 2011
2 déc. 2011 à 10:16
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.
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
2 déc. 2011 à 10:45
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
0

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

Posez votre question
cs_cheyenne Messages postés 693 Date d'inscription samedi 18 mai 2002 Statut Membre Dernière intervention 17 avril 2017 2
2 déc. 2011 à 17:22
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
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 223
2 déc. 2011 à 17:29
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
0
cs_cheyenne Messages postés 693 Date d'inscription samedi 18 mai 2002 Statut Membre Dernière intervention 17 avril 2017 2
2 déc. 2011 à 17:51
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
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 223
2 déc. 2011 à 17:55
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
0
cs_cheyenne Messages postés 693 Date d'inscription samedi 18 mai 2002 Statut Membre Dernière intervention 17 avril 2017 2
2 déc. 2011 à 18:50
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
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 223
2 déc. 2011 à 19:39
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
0
RDP50 Messages postés 3 Date d'inscription jeudi 6 août 2009 Statut Membre Dernière intervention 2 décembre 2011
2 déc. 2011 à 19:40
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+
0
Utilisateur anonyme
2 déc. 2011 à 19:53
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
0
cs_cheyenne Messages postés 693 Date d'inscription samedi 18 mai 2002 Statut Membre Dernière intervention 17 avril 2017 2
2 déc. 2011 à 20:43
> 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
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 223
2 déc. 2011 à 20:52
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
0
cs_cheyenne Messages postés 693 Date d'inscription samedi 18 mai 2002 Statut Membre Dernière intervention 17 avril 2017 2
2 déc. 2011 à 22:23
> 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
0
Rejoignez-nous