none
Recuperer un texte d'une page web

    Question

  • Bonjour je voudrais savoir si il est possible de récuperer un texte d'une page web et comment?

    Imaginons que sur une page j'ai un chiffre comme 5 comment je peux le récuperer?

    On m'a parler de web.broser comment sa marche ...

    Voila d'avance merci pour les réponses

    Saturday, November 20, 2010 9:35 PM

Answers

  •  

     

    Comme j'ai pu vous dire le meilleurs moyen c'est d'utiliser Regex voici un exemple

     

    Imports System.Net
    Imports System.IO
    Imports System.Text.RegularExpressions
    
    Public Class Form1
    
      Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim webRequest As WebRequest
        Dim webResponse As WebResponse
    
        webRequest = HttpWebRequest.Create("http://social.msdn.microsoft.com/Forums/fr-FR/vbasicfr/thread/fe1835a5-20cc-44e0-9f2c-ac5560668712")
        webResponse = webRequest.GetResponse()
    
        Using stream As StreamReader = New StreamReader(webResponse.GetResponseStream)
          Dim r As New Regex("(?<word>\d)", RegexOptions.Multiline Or RegexOptions.IgnoreCase)
    
          Dim input As String
          Do While stream.Peek >= 0
            input = stream.ReadLine
            Dim matches As MatchCollection = r.Matches(input)
    
            If matches.Count > 0 Then
              Console.WriteLine("{0} ({1} matches):", input, matches.Count)
              For Each match As Match In matches
                Console.WriteLine("  " + match.Value)
              Next
            End If
          Loop
        End Using
      End Sub
    End Class
    
    

     


    Cordialement, Troxsa
    Tuesday, November 30, 2010 9:19 PM
    Answerer

All replies

  • Bonjour,

    Voici comment récupérer le contenu d'une page web, a vous de récupérer l'information nécessaire en analysant la chaîne "pageHtml".

        Dim webRequest As WebRequest
        Dim webResponse As WebResponse
    
        webRequest = HttpWebRequest.Create("http://.../mapage.html")
        webResponse = webRequest.GetResponse()
    
        Using stream As StreamReader = New StreamReader(webResponse.GetResponseStream())
          Dim pageHtml As String
    
          pageHtml = stream.ReadToEnd()
    
          ' Utiliser ici le contenu de pageHtml avec la méthode IndexOf() par exemple
        End Using
    

    Cordialement


    Gilles TOURREAU - MVP C# - MCPD Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5 - MCTS ADO .NET 3.5 / SQL Server 2008 Developper - Architecte .NET/Consultant/Formateur - http://gilles.tourreau.fr
    • Proposed as answer by AtHackX Monday, November 22, 2010 9:47 AM
    • Marked as answer by Alex PetrescuMicrosoft employee Wednesday, November 24, 2010 1:46 PM
    • Unmarked as answer by Hugo7 Friday, November 26, 2010 4:28 PM
    • Unproposed as answer by Hugo7 Friday, November 26, 2010 4:29 PM
    • Proposed as answer by TroxsaEditor Friday, November 26, 2010 6:44 PM
    Sunday, November 21, 2010 10:22 PM
    Moderator
  • Bonjour,

     

    Hugo7, je vous remercie de nous dire si vous avez besoin d’assistance supplémentaire ou si la réponse de M. Tourreau a été suffisante.

     

    Cordialement,

    Alex

    ________________

    Publiez un article sur MSDN !

    Windows Phone 7

    Astuces pour Visual Studio 2010

    XNA – Développement jeux vidéo

    Didacticiels et astuces : VB.NET, C#, ASP.NET, .NET Framework, Silverlight, Workflow Foundation, WPF

    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

     

     


    Suivez MSDN sur Twitter 

    Monday, November 22, 2010 3:11 PM
  • Bonjour merci pour les réponses.

    Quel est le

    Import System
    
    que je dois mettre pour pouvoir utiliser votre code?

    Comment marche la méthode IndexOf() ?

    D'avance merci

    Monday, November 22, 2010 9:16 PM
  • Bonjour,

    Vous devez mettre : "Imports System.Net"

    La méthode IndexOf() prend en paramètre une chaîne à rechercher et retourne la position où elle se trouve (-1 si la chaîne est inexistante). Plus d'informations : http://msdn.microsoft.com/fr-fr/library/system.string.indexof.aspx

    Cordialement


    Gilles TOURREAU - MVP C# - MCPD Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5 - MCTS ADO .NET 3.5 / SQL Server 2008 Developper - Architecte .NET/Consultant/Formateur - http://gilles.tourreau.fr
    • Proposed as answer by TroxsaEditor Friday, November 26, 2010 6:45 PM
    Monday, November 22, 2010 9:59 PM
    Moderator
  • Bonjour,

    Pour la lecture d'une page HTML le mieux ne serait il pas Regex ?

     

    A bientot


    Cordialement, Troxsa
    Tuesday, November 23, 2010 9:17 AM
    Answerer
  • Mais je ne peux pas récuperer de texte avec la méthode indexof ....
    Friday, November 26, 2010 4:28 PM
  • Bonjour,

     

    Bien sur sur si vous pouvez

    Le code qui à été donné est le bon suffit juste d'ajouté ce fameux indexOf qui est facile !

    L'utilisation de Regex est plus dur, si vous ne savez pas utiliser plutot l'indexOf

      Dim webRequest As WebRequest
        Dim webResponse As WebResponse
    
        webRequest = HttpWebRequest.Create("http://social.msdn.microsoft.com/Forums/fr-FR/vbasicfr/thread/fe1835a5-20cc-44e0-9f2c-ac5560668712")
        webResponse = webRequest.GetResponse()
    
        Using stream As StreamReader = New StreamReader(webResponse.GetResponseStream)
          Dim pageHtml As String = stream.ReadToEnd()
    
          ' Utiliser ici le contenu de pageHtml avec la méthode IndexOf() par exemple
          If pageHtml.IndexOf("5") > 0 Then
            MsgBox("Le 5 est bien present")
          Else
            MsgBox("Non pas dans cette page !")
          End If
        End Using
    

    Cordialement


    Cordialement, Troxsa
    Friday, November 26, 2010 6:44 PM
    Answerer
  • Oui mais la je test juste si le 5 est dans la page non?
    Saturday, November 27, 2010 2:02 PM

  • c'est pas ce qui est demandé a la base ?


    Cordialement, Troxsa
    Saturday, November 27, 2010 2:44 PM
    Answerer
  • Bonjour,

     

    Pouvez-vous expliquer à nouveau ce que vous voulez récupérer dans la page html ? Est-ce qu’il s’agit d’un contenu dont vous savez a priori qu’il existe ? Ou vous voulez récupérer tout le texte contenu dans la page, même si on ne connait pas en avance quel est ce texte ?

     

    Cordialement,

    Alex

    ________________

    Publiez un article sur MSDN !

    Windows Phone 7

    Astuces pour Visual Studio 2010

    XNA – Développement jeux vidéo

    Didacticiels et astuces : VB.NET, C#, ASP.NET, .NET Framework, Silverlight, Workflow Foundation, WPF

    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

     

     


    Suivez MSDN sur Twitter 

    Sunday, November 28, 2010 9:37 AM
  • Merci pour les réponses.

    Alors en faite j'ai un site web avec une page qui contiendra juste un chiffre ou un nombre et je voudrais pouvoir récupérer ce nombre ou ce chiffre.

    Ce nombre ou ce chiffre sera afficher sur la page soit dans une textbox ou directement dans le code Html ou autrement je ne sais pas mais il sera bien là.

    D'avance merci

    Sunday, November 28, 2010 1:46 PM
  • Personne n'a de réponse ?
    Tuesday, November 30, 2010 3:11 PM
  • Bonjour Hugo7

     

    toute les réponse vous ont étés données, personnelement j'ai essayé et sa fonctionne tres bien ...

    donc je vois pas quoi faire de plus de ce qui a été donné

     

     


    Cordialement, Troxsa
    Tuesday, November 30, 2010 3:29 PM
    Answerer
  • Oui mais cela ne me permet pas de récupérer n'importe quel nombre ....

    Ou alors il faut que je fasse une boucle pour tester tous les nombre?

    Pourrais-je avoir de l'aide svp

    Deuxiemement quelque soit l'url que je mette même d'une page sans 5 comme la page d'accueil de google il me met qu'un 5 est présent ..Ce code regarde t'il le code html? parce que dans ce cas la il y a de forte chance que un bon nombre de nombre i soit et induise des erreurs

    D'avance merci

    Tuesday, November 30, 2010 6:59 PM
  • Bonjour,

    Oui mais cela ne me permet pas de récupérer n'importe quel nombre ....
    Pouvez-vous confirmer que vous souhaitez récupérer tous les nombres présent dans la page HTML ? (entre les balise <html></html>) ?

    Deuxiemement quelque soit l'url que je mette même d'une page sans 5 comme la page d'accueil de google il me met qu'un 5 est présent ..Ce code regarde t'il le code html? parce que dans ce cas la il y a de forte chance que un bon nombre de nombre i soit et induise des erreurs
    Oui, le code de Troxsa regarde dans tout le code HTML de la page (pour mieux vous en rendre compte, allez dans Internet Explorer sur le site Google puis sur Page / Afficher la source).

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte .NET/Consultant/Formateur chez Winwise
    Blog : http://gilles.tourreau.fr
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5
    Tuesday, November 30, 2010 7:38 PM
    Moderator
  •  

     

    Comme j'ai pu vous dire le meilleurs moyen c'est d'utiliser Regex voici un exemple

     

    Imports System.Net
    Imports System.IO
    Imports System.Text.RegularExpressions
    
    Public Class Form1
    
      Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim webRequest As WebRequest
        Dim webResponse As WebResponse
    
        webRequest = HttpWebRequest.Create("http://social.msdn.microsoft.com/Forums/fr-FR/vbasicfr/thread/fe1835a5-20cc-44e0-9f2c-ac5560668712")
        webResponse = webRequest.GetResponse()
    
        Using stream As StreamReader = New StreamReader(webResponse.GetResponseStream)
          Dim r As New Regex("(?<word>\d)", RegexOptions.Multiline Or RegexOptions.IgnoreCase)
    
          Dim input As String
          Do While stream.Peek >= 0
            input = stream.ReadLine
            Dim matches As MatchCollection = r.Matches(input)
    
            If matches.Count > 0 Then
              Console.WriteLine("{0} ({1} matches):", input, matches.Count)
              For Each match As Match In matches
                Console.WriteLine("  " + match.Value)
              Next
            End If
          Loop
        End Using
      End Sub
    End Class
    
    

     


    Cordialement, Troxsa
    Tuesday, November 30, 2010 9:19 PM
    Answerer
  • Merci pour la réponse , pourrais-je avoir plus d'info sur le code ,  comment la fonction marche t'elle? Est 'il possible de mettre le nombre récupérer dans une textbox? D'avance merci
    Wednesday, December 01, 2010 9:29 PM
  • Hugo7,

    Un forum d'entre aide sers à aider la personne qui en a besoin mais pas a lui faire tout sinon cela ne s'appelle plus de l'aide, c'est faire son travail !
    Si vous ne comprenez pas le code c'est normal :) enfin ça dépend ... :)

    La méthode utilisé Regex (regularExpression) , vous reverrez toutes les informations sur le site :  Regex (regularExpression)

    Avez vous essayé le code ? car si vous l'aviez fait cela aurait été facile de mettre un textbox la ou il le faillais !

     

    Imports System.Net<br/>
    Imports System.IO<br/>
    Imports System.Text.RegularExpressions<br/>
    <br/>
    Public Class Form1<br/>
    <br/>
     Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load<br/>
      Dim webRequest As WebRequest<br/>
      Dim webResponse As WebResponse<br/>
    <br/>
      webRequest = HttpWebRequest.Create("http://social.msdn.microsoft.com/Forums/fr-FR/vbasicfr/thread/fe1835a5-20cc-44e0-9f2c-ac5560668712")<br/>
      webResponse = webRequest.GetResponse()<br/>
    <br/>
      Using stream As StreamReader = New StreamReader(webResponse.GetResponseStream)<br/>
       Dim r As New Regex("(?<word>\d)", RegexOptions.Multiline Or RegexOptions.IgnoreCase)<br/>
    <br/>
       Dim input As String<br/>
       Do While stream.Peek >= 0<br/>
        input = stream.ReadLine<br/>
        Dim matches As MatchCollection = r.Matches(input)<br/>
    <br/>
        If matches.Count > 0 Then<br/>
        ' Console.WriteLine("{0} ({1} matches):", input, matches.Count)<br/>
         For Each match As Match In matches<br/>
          Texbox1.text += match.Value<br/>
         Next<br/>
        End If<br/>
       Loop<br/>
      End Using<br/>
     End Sub<br/>
    End Class
    

    J'attire votre attention sur le fonctionnement du code, cela va balayer toute la page et vous remontez tout ce qui est en rapport avec ce qui est demandé, dans le cas du code actuelle c'est des numéros (\d), si vous ne faite pas plus de traitement dans le code cela va vous donner, dans le textbox, la derniere valeur trouvé ce qui est normal.

    Avant de reposer une autre question sur ce sujet je vous conseil d’essayé de comprendre le code, vous avez tout pour comprendre il suffit de lire ce qui ce trouve sur le site ^^

    ...

     


    Cordialement, Troxsa
    Wednesday, December 01, 2010 9:59 PM
    Answerer