2010-01-11 6 views
0

Je crée une application C# pour obtenir les informations DOM d'une page Web. Je ne peux pas extraire une étiquette TBODY en utilisant mon application. J'utiliseAide pour extraire une balise d'un DOM d'une page Web

  • WebBrowser de commande livré par Visual Studio

  • une référence à la Com Microsoft.mshtml 7.0.3300.0

Si je le Internet Explorer Developer Toolbar) Je peux voir toutes les informations dont j'ai besoin.

La balise a id = "tbody_id" et porte une liste de balises remplies de données qui sont affichées dans les attributs innertHTML et innertText.

L'utilisation du code ci-dessous innertHtml et innertText sont tous les deux null. Qu'est-ce que je fais mal? Il y a d'autres contrôles que je peux utiliser

 
mshtml.IHTMLDocument3 domDoc = this.webBrowser.Document.DomDocument as mshtml.IHTMLDocument3; 
mshtml.IHTMLElement element = domDoc.getElementById("tbody_id"); 
String innerHtml = element.innerHTML; 
String innerText = element.innerText; 

Répondre

0

Je travaille sur le même genre - la seule chose que vous pourriez essayer est à un casting implicite.

que je fais et similaires ont aucun problème avec getElementby

IHTMLDocument3 currDocument3 = (IHTMLDocument3)webBrowser.Document.DomDocument; // Cast browser document 
    IHTMLElement element = currDocument3.getElementById("f15188"); 

Hope this helps

Roger

+0

Salut Roger J'ai essayé mais ça ne marche pas pour moi. Dans mon cas, la variable element n'est pas nulle mais l'innserText retourné par elle. Après avoir testé différentes choses, j'ai trouvé un excellent contrôle pour WebBrowsing gratuit et vraiment bon. Voir les notes que j'ai écrites et suivez les liens pour un exemple de code majeur et plus détaillé. Je vous remercie beaucoup pour votre temps AFG –

0

Pour tous les intéressés, je finalement résolu cette question.

Je suis simplement passé du contrôle WebBrowser par Microsoft à csEXWB.

Une belle colonne pour voir comment cela fonctionne peut être trouvée here où j'ai appris le code pour extraire correctement les informations DOM.

Le contrôle doit être enregistré car ti semble être un composant COM (veuillez lire les notes sur le site Web et dans la colonne).

  1. Placez un cEXWB dans votre formulaire comme et vous aurez un contrôle de navigateur Web dans votre application.

    // your object somewhere 
    public csExWB.cEXWB cEXWB1;
  2. Aller sur le site Web que vous souhaitez

    cEXWB1.Navigate("http://stackoverflow.com")
  3. obtenir Une fois rempli les DOM et chaque élément que vous voulez

    IHTMLDocument3 domDoc = cEXWB1.WebbrowserObject.Document as mshtml.IHTMLDocument3; 
    IHTMLElement element = domDoc.getElementById("my_id");
Questions connexes