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 :

probleme de parsing [Débutant]


Sujet :

VB.NET

  1. #1
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2012
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2012
    Messages : 40
    Par défaut probleme de parsing
    bonjour
    j'utilise htmlagilitypack et j'aimerai récuperer ce qui est juste apres le none
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <div class="jQuery_product_metadata_id" style="display: none;">1000140198-0-5-GH:1$v1v$</div>
    mon code pour le récupérer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     Dim tagId = doc.DocumentNode.Descendants("div").Where(Function(t) t.GetAttributeValue("style", "") = "display: none;")
            Dim valID = tagId.Select(Function(t) t.InnerText)
    sauf que parfois style="display: none;" est utilisé autre part dans la source du coup ca me fausse pas mal de chose

    exemple ou il est utilisé autre part:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <div class="_tvly_adSense_template_target_sponsored_links1" style="display: none;"></div>
    <script type="text/javascript">
    merci d'avance

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Tu devrais peut-être plutôt te baser sur l'attribut class, non ?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim tagId = doc.DocumentNode.Descendants("div").Where(Function(t) t.GetAttributeValue("class", "") = "jQuery_product_metadata_id")
            Dim valID = tagId.Select(Function(t) t.InnerText)
    ça me semble moins hasardeux que de se baser sur une valeur de style...

  3. #3
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2012
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2012
    Messages : 40
    Par défaut
    je suis un vrai endormit je pensais l'avoir tester .....

    merci Tomlev

  4. #4
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2012
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2012
    Messages : 40
    Par défaut
    juste une dernière question si au contraire je voulais récupéré ce qu'il y a dans le style je dois faire comment?

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par cha23 Voir le message
    juste une dernière question si au contraire je voulais récupéré ce qu'il y a dans le style je dois faire comment?
    Je comprends pas ce que tu veux dire... tu sais déjà récupérer le contenu du style, c'est ce que tu faisais dans ton code d'origine (avec GetAttributeValue)

  6. #6
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2012
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2012
    Messages : 40
    Par défaut
    non ca me donner ce que je voulais mais parfois ca me donenr de mauvais truc
    la en fait j'aimerai recuperer ce qu'il y a dans "alt" dans cette exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <div class="rating">
                <a href="blablabla>
                    <img src="blablabla" alt="3 étoile" />
                </a>
            </div>
    d'ou ma question en pensant que c'etais ce que j'avais posé avant

  7. #7
    Membre Expert Avatar de DonQuiche
    Inscrit en
    Septembre 2010
    Messages
    2 741
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 2 741
    Par défaut
    Citation Envoyé par cha23 Voir le message
    non ca me donner ce que je voulais mais parfois ca me donenr de mauvais truc
    En fait je suppose que tu récupérais bien la valeur désirée mais que tu rencontrais un problème d'encodage de la page : si tu l'as récupérée via une instance de WebClient (qui présume que la source est en utf-8) et que le serveur t'a envoyé autre chose, certains caractères ("&" notamment) seront corrompus. Il faut spécifier le bon encodage à WebClient dans ce cas.

  8. #8
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Tu peux faire quelque chose comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim ratings = _
        From div In doc.DocumentNode.DescendantNodes("div") _
        Where div.GetAttributeValue("class", "") = "rating" _
        From img In div.DescendantNodes("img") _
        Select img.GetAttributeValue("alt")
     
    Dim rating = ratings.FirstOrDefault()

  9. #9
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2012
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2012
    Messages : 40
    Par défaut
    Bonjour Tomlev,
    doc.DocumentNode.DescendantNodes("div") m'affiche une erreur:

    Erreur 1 L'expression de type 'HtmlAgilityPack.HtmlNode' ne peut pas être interrogée. Vérifiez que vous n'omettez pas une référence d'assembly et/ou une importation d'espace de noms pour le fournisseur LINQ

  10. #10
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    En fait c'est Descendants, pas DescendantNodes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        Dim ratings = 
            From div In doc.DocumentNode.Descendants("div")
            Where div.GetAttributeValue("class", "") = "rating"
            From img In div.Descendants("img")
            Select img.GetAttributeValue("alt", "")
    Et vérifie que tu as bien mis Imports System.Linq au début de ton fichier

  11. #11
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2012
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2012
    Messages : 40
    Par défaut
    Merci beaucoup Tomlev

  12. #12
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2012
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2012
    Messages : 40
    Par défaut
    Pour revenir a ce que dit DonQuiche ,en effet j'ai un souci d'encodage
    le texte est encodé en utf8 mais j'arrive pas a le modifier pour qu'ils acceptent les caractères avec accent ou alors le changer en "No Dom"

    j'ai beau faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
            Dim doc = New HtmlDocument()
            Dim wc = New WebClient()
     
            wc.Encoding = System.Text.Encoding.Unicode
            ' ou 
            wc.encoding=system.text.encoding.getencoding(1252)
    en essayant plein de code ca ne change rien du tout

  13. #13
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Et tu as essayé avec Encoding.UTF8 ?

  14. #14
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2012
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2012
    Messages : 40
    Par défaut
    oui

  15. #15
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Essaie plutôt avec la classe HtmlWeb, elle gère automatiquement l'encodage :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim web As New HtmlWeb()
    Dim doc = web.Load(url)
    ...

  16. #16
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2012
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2012
    Messages : 40
    Par défaut
    parfais ça marche nickel!!!

    merci encore

  17. #17
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2012
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2012
    Messages : 40
    Par défaut
    reste juste un petit soucis avec les "é" en "&eacute;"
    et si possible transformer les "&amp" en "&"

    edit:c'est bon j'ai fait un replace et ça marche bien

    mais si y a une autre méthode je reste preneur

  18. #18
    Membre Expert Avatar de DonQuiche
    Inscrit en
    Septembre 2010
    Messages
    2 741
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 2 741
    Par défaut
    Il suffit de passer les chaînes par HttpUtility.HtmlDecode.

  19. #19
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2012
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2012
    Messages : 40
    Par défaut
    j'ai pas tout comprit la methode a suivre vu que quand je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    httpUtility.htmlDecode("&amp;","&")
    ca me met que httputility n'est pas déclaré

  20. #20
    Membre Expert Avatar de DonQuiche
    Inscrit en
    Septembre 2010
    Messages
    2 741
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 2 741
    Par défaut
    Il suffit d'ajouter une référence à System.Web.dll. Si celle-ci n'est pas visible, modifier les propriétés du projet pour choisir la version complète du framework et non le "client profile" (sous-ensemble allégé du framework destiné à faciliter la distribution des applis dotnet sur les anciennes version de Windows).

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Probleme de parsing de chaine, tronquer une chaine
    Par Voodo'o_d'ool dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 06/08/2008, 11h28
  2. Probleme de parsing sous struts ...
    Par DanZzz dans le forum Struts 1
    Réponses: 5
    Dernier message: 18/05/2006, 13h17
  3. [DOM] Probleme de parsing Xml en java
    Par bolivari dans le forum Format d'échange (XML, JSON...)
    Réponses: 4
    Dernier message: 25/01/2006, 19h42
  4. [MSXSL] probleme de parsing &nbsp
    Par Triangle dans le forum Valider
    Réponses: 2
    Dernier message: 26/07/2005, 09h51
  5. [JDOM] probleme de Parse
    Par seb_fou dans le forum Format d'échange (XML, JSON...)
    Réponses: 7
    Dernier message: 18/05/2005, 16h27

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