IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Regex pour capturé les Urls [Débutant]


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juin 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juin 2013
    Messages : 4
    Par défaut Regex pour capturé les Urls
    Bonjour,

    Je rencontre un problème avec une régex pour récupéré les Urls dans le code source d'une page.

    J'utilise cette Url :
    Regex.Matches(Text, "<a href=""(https?://(?:.+))""(?:.+)?>(.+)<", RegexOptions.IgnoreCase)

    La regex me retourne qu'une partie des Urls, alors qu'elles ont toute la même forme.

    Merci de bien vouloir m'éclairé les idées.

  2. #2
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Billets dans le blog
    3
    Par défaut
    Donne-nous des exemples parlants, et indique quels sont ceux qui marchent et ceux qui ne marche pas.

    Précise également quelle est la syntaxe des URL que tu cherches à récupérer.
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juin 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juin 2013
    Messages : 4
    Par défaut
    Je recherche les url de ce type :
    http://www.developpez.net/forums/newreply.php?do=newreply&noquote=1&p=7368808" target="_blank">lien</a>
    et
    http://www.developpez.net/forums/newreply.php?do=newreply&noquote=1&p=7368808">lien</a>

    La recherche échoue dans ce contexte :
    <br /><a href="http://www.developpez.net/forums/newreply.php?do=newreply&noquote=1&p=7368808" target="_blank">Lien</a><br />

  4. #4
    Membre Expert
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Billets dans le blog
    7
    Par défaut
    Un simple parsing de ce type fera l'affaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     Private Function GetUrl(ByVal Source$, ByVal Before$, ByVal After$, ByVal Offset%) As String
            If String.IsNullOrEmpty(Source) Then Return String.Empty
            If Source.Contains(Before) = True Then
                Dim Result$ = Source.Substring(Source.IndexOf(Before) + Offset)
                If Result.Contains(After) = True Then
                    If Not String.IsNullOrEmpty(After) Then Result = Result.Substring(0, Result.IndexOf(After))
                End If
                Return Result
            Else
                Return String.Empty
            End If
        End Function
    Utilisation :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      Dim line$ = "<br /><a href=""http://www.developpez.net/forums/newreply.php?do=newreply&noquote=1&p=7368808"" target=""_blank"">Lien</a><br />"
            Dim Url$ = ParseBetween(line, "href=""", """", "href=""".Length)
    Msgbox(Url)
    A+

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    700
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 700
    Par défaut
    Bonsoir
    il y a aussi HtmlAgility, créé pour le HTML.
    A tester (un exemple simple) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
            Dim url As String = "http://tlevesque.developpez.com/tutoriels/dotnet/extraction-donnees-web-html-agility-pack/"
            Dim web As New HtmlWeb()
            Dim doc As HtmlDocument = web.Load(url)
     
            Dim links = doc.DocumentNode.Descendants("a")
            For Each link In links
                Dim href As HtmlAttribute = link.Attributes("href")
                If href Is Nothing Then Continue For
                If href.Value.StartsWith("http://www.developpez.net", StringComparison.CurrentCultureIgnoreCase) Then
                    Console.WriteLine(href.Value)
                End If
            Next

  6. #6
    Membre à l'essai
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juin 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juin 2013
    Messages : 4
    Par défaut
    Merci à vous, j'opte pour HtmlAgility.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Regex pour enlever les comments HTML
    Par pongping dans le forum Langage
    Réponses: 2
    Dernier message: 02/09/2007, 20h00
  2. Réponses: 3
    Dernier message: 23/04/2007, 10h43
  3. Réponses: 2
    Dernier message: 12/03/2007, 19h07
  4. [RegEx] Problème pour transformer les url en liens cliquable
    Par AlphaYoDa dans le forum Langage
    Réponses: 2
    Dernier message: 20/02/2006, 13h54
  5. [TCP/IP] pour capturer les trames
    Par fatiha dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 09/01/2006, 14h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo