Parser du Code Html et extraire les liens [Résolu]

PORTE_BLINDEE 30 Messages postés dimanche 10 décembre 2006Date d'inscription 15 avril 2008 Dernière intervention - 12 juin 2007 à 17:41 - Dernière réponse : NAJEHROUA 1 Messages postés mercredi 21 octobre 2009Date d'inscription 24 février 2010 Dernière intervention
- 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
Afficher la suite 

9 réponses

Répondre au sujet
hvb 961 Messages postés vendredi 25 octobre 2002Date d'inscription 27 janvier 2009 Dernière intervention - 12 juin 2007 à 19:42
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de hvb
PORTE_BLINDEE 30 Messages postés dimanche 10 décembre 2006Date d'inscription 15 avril 2008 Dernière intervention - 12 juin 2007 à 17:53
0
Utile
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)
Commenter la réponse de PORTE_BLINDEE
hvb 961 Messages postés vendredi 25 octobre 2002Date d'inscription 27 janvier 2009 Dernière intervention - 12 juin 2007 à 19:28
0
Utile
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
Commenter la réponse de hvb
PORTE_BLINDEE 30 Messages postés dimanche 10 décembre 2006Date d'inscription 15 avril 2008 Dernière intervention - 12 juin 2007 à 21:13
0
Utile
Merci pour cette réponse rapide.

Je regarde sa et je vous dit!
Commenter la réponse de PORTE_BLINDEE
PORTE_BLINDEE 30 Messages postés dimanche 10 décembre 2006Date d'inscription 15 avril 2008 Dernière intervention - 13 juin 2007 à 03:51
0
Utile
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'!!
Commenter la réponse de PORTE_BLINDEE
hvb 961 Messages postés vendredi 25 octobre 2002Date d'inscription 27 janvier 2009 Dernière intervention - 13 juin 2007 à 04:23
0
Utile
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
Commenter la réponse de hvb
Kornebrume 37 Messages postés mardi 3 avril 2007Date d'inscription 10 avril 2008 Dernière intervention - 20 juin 2007 à 16:06
0
Utile
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
Commenter la réponse de Kornebrume
hvb 961 Messages postés vendredi 25 octobre 2002Date d'inscription 27 janvier 2009 Dernière intervention - 20 juin 2007 à 18:07
0
Utile
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
Commenter la réponse de hvb
NAJEHROUA 1 Messages postés mercredi 21 octobre 2009Date d'inscription 24 février 2010 Dernière intervention - 24 févr. 2010 à 02:01
0
Utile
JE PEUT VOIR UN CODE VB COMME UN PARSER D UN FICHIER HTML?
Commenter la réponse de NAJEHROUA

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.