Parser du Code Html et extraire les liens

Résolu
PORTE_BLINDEE Messages postés 30 Date d'inscription dimanche 10 décembre 2006 Statut Membre Dernière intervention 15 avril 2008 - 12 juin 2007 à 17:41
NAJEHROUA Messages postés 1 Date d'inscription mercredi 21 octobre 2009 Statut Membre Dernière intervention 24 février 2010 - 24 févr. 2010 à 02:01
Bonjour

Je souhaite parser le code dune page html pour récuper liens et URL d'images

Jutilise un webbrowser caché.

Le probleme c'est que le webbrowser charge toute la page comme un vrai browser (images, bannieres, video, musique alors que moi jai juste besoin du code!
 par exemple si je charche ce site http://www.annabella.net/music.html jentend la music en background...

Mon idée est d'arréter le chargement de la page des que je récupere les liens comme sa
les liens sont chargés dès le readystate Interactive. donc jessai:
 
Private Sub WebBrowser1_ProgressChanged(Byval ..., Byref...) Handles WebBrowser1.ProgressChanged
     
        htmldoc = WebBrowser1.Document()
        For i = 0 To htmldoc.Links.Count - 1
                      ListBox1.Items.Add(htmldoc.Links.Item(i).GetAttribute("HREF"))
        Next
       If WebBrowser1.ReadyState = WebBrowserReadyState.Interactive Then
            WebBrowser1.Stop() << cette methode ne marche pas
            Exit Sub
        End If

End sub

Cependant la méthode       WebBrowser1.Stop()  ne marche pas  et la page se charge completement jusqu'à completed et ...la music se lance

Jai tester une autre méthode sans webbrowser avec .createDocumentFromURL(url) de IHTMLDOCUMENT de la library MSHTML

 bon sa marche....mais le probleme c'est que jaimerai pouvoir récupérer les images de pages qui demandent un windows Login/mot de passe et récupérer les liens/images en passant par un proxy...
Jignore si c'est possible avec les interfaces de MSHTML

J'attend bcp de vous!! sa fé des jours que je cherche une méthode...

Merci davance pour votre aide
A voir également:

9 réponses

hvb Messages postés 939 Date d'inscription vendredi 25 octobre 2002 Statut Membre Dernière intervention 27 janvier 2009 3
12 juin 2007 à 19:42
ah non ça ne va pas, la ça affiche 'href="blabla"
Desolé ^^

Déja j'ai oublier de préciser d'ajout le import pour les regex :
Imports System.Text.RegularExpressions

Ensuite deux choix: 
        
        Dim tab As MatchCollection = regz.Matches(res1)
        For i As Integer = 0 To tab.Count - 1
            MessageBox.Show(regz.Split(tab(i).Value)(1))
        Next


        Ou

       Dim tab2() As String = regz.Split(res1)
        If tab2.Length > 1 Then
            For i As Integer = 1 To tab2.Length - 1 Step 2
                MessageBox.Show(tab2(i))
            Next
        End If

Hvb a.k.a Batto
http://batto.info/ ^^x
bato.ltd .at. gmail.com
3
PORTE_BLINDEE Messages postés 30 Date d'inscription dimanche 10 décembre 2006 Statut Membre Dernière intervention 15 avril 2008
12 juin 2007 à 17:53
L'autre solution est de recupérer juste le code htm d'une part avec des méthode simple (avec webclient ou webrequest)
et le parser d'autre part avec une library externe

Est-ce que vous connaissez des source VB.NET de parseur HTML. j'en ai trouvé de tres bonnes mais en C# malheureusement

Sinon jai trouvé html agility
http://www.codeplex.com/htmlagilitypack
 je pense qu'il faut compiler la source en bibliotheque de classes et on peux sen serrvir dans tout les languages DOT NET. (enfin je crois)
0
hvb Messages postés 939 Date d'inscription vendredi 25 octobre 2002 Statut Membre Dernière intervention 27 janvier 2009 3
12 juin 2007 à 19:28
Utilise une webrequest pour recuperer le code, un exemple est dispo ici :
http://www.vbfrance.com/codes/REQUETE-HTTP-GET-POST_36181.aspx

Ensuite utilise les regex pour extraire touts les liens :

        Dim regz As Regex = New Regex("href=" & Chr(34) & "([\S\s^" & Chr(34) & "]*?)" & Chr(34))
        Dim res1 As String = Get_request("http://www.google.fr/")
        Dim tab As MatchCollection = regz.Matches(res1)
        For i As Integer = 0 To tab.Count - 1
            MessageBox.Show(tab.Item(i).Value)
        Next

Hvb a.k.a Batto
http://batto.info/ ^^x
bato.ltd .at. gmail.com
0
PORTE_BLINDEE Messages postés 30 Date d'inscription dimanche 10 décembre 2006 Statut Membre Dernière intervention 15 avril 2008
12 juin 2007 à 21:13
Merci pour cette réponse rapide.

Je regarde sa et je vous dit!
0

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

Posez votre question
PORTE_BLINDEE Messages postés 30 Date d'inscription dimanche 10 décembre 2006 Statut Membre Dernière intervention 15 avril 2008
13 juin 2007 à 03:51
WOUHOUUU!!!

 l'objet de mes problemes était ke les URL récupérée était des adresses relatives ../../../..page.htm :-/

mais avec System.Uri.TryCreate on peut retrouver construire une url absolue a partir s'une relative exelent pile poil ce que je charchais (depuis des jours...)

bref plus besoin de parseur Ta méthode marche et est super rapide. de plus je peux me conecter à des pages avec login/pass puisque c'est moi qui décide la maniere de récupérer le code*

si je veux les images embedded je recherche "src="

bref tout y est!

faut bien le dire mec tu DECHIW'!!
0
hvb Messages postés 939 Date d'inscription vendredi 25 octobre 2002 Statut Membre Dernière intervention 27 janvier 2009 3
13 juin 2007 à 04:23
lol, tant mieux.
Effectivement la je ne match que les urls entre href, mais tu peux modifier la regex à ta guise. =)

Bonne continuation, et bonne fin de nuit ^^

Hvb a.k.a Batto
http://batto.info/ ^^x
bato.ltd .at. gmail.com
0
Kornebrume Messages postés 35 Date d'inscription mardi 3 avril 2007 Statut Membre Dernière intervention 10 avril 2008
20 juin 2007 à 16:06
Est-il possible d'éditer des "textbox" sur une page html et d'activer un bouton depuis une application?

Je récupère le code html d'une page qui contient du javascript.

Le but de mon appli est d'éditer 2 champs (login/mdp) et de cliquer (logiciellement) sur le bouton pour accéder à un site.

Si quelqu'un a une idée, merci de m'en faire part;

Cordialement.

Korne
0
hvb Messages postés 939 Date d'inscription vendredi 25 octobre 2002 Statut Membre Dernière intervention 27 janvier 2009 3
20 juin 2007 à 18:07
Tu devrais créer un topic spécialement sur ce sujet (que tu évoques déja sur ma source sur les Requetes HTTP), car hormis l'auteur de la première question et moi (qui recevons donc les notifier) je pense que peu de monde risque de te repondre ici.

Sache en tout cas que le choix d'automatiser les requetes est je pense, la méthode la plus propre, meme si il doit etre possible de bidouiller avec le composant webbrowser, ou bien à coup de sendkeys. (mais la je ne cautionne pas lol)

Hvb a.k.a Batto
http://batto.info/ ^^x
bato.ltd .at. gmail.com
0
NAJEHROUA Messages postés 1 Date d'inscription mercredi 21 octobre 2009 Statut Membre Dernière intervention 24 février 2010
24 févr. 2010 à 02:01
JE PEUT VOIR UN CODE VB COMME UN PARSER D UN FICHIER HTML?
0
Rejoignez-nous