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

C++/CLI Discussion :

R�cup�rer le source d'une page web


Sujet :

C++/CLI

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2002
    Messages
    38
    D�tails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 38
    Par d�faut R�cup�rer le source d'une page web
    Bonjour,
    J'essaie de r�cup�rer le source d'une page web, avec un webbrowser (Visual Studio 2013).

    J'ai donc un
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    String^ contenu = this->webBrowser1->DocumentText;
    Mais �a ne r�cup�re qu'un morceau de ma page, et au debug, je ne peux visualiser qu'en lecture .txt

    Les autres modes me disent que les balises ne sont pas ferm�es, ou refusent de lire quoi que ce soit.

    Je suppose qu'il faudrait peut-�tre un tableau de String^, plut�t qu'un String^ ?

    Merci pour votre aide.
    Le C++/CLI rajoute une couche...

  2. #2
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    Je ne saurais pas trop dire, personnellement je passerais plut�t par une HttpWebRequest que par un WebBrowser... � moins qu'il y ait des histoires de Javascript modifiant le DOM. Auquel cas, cette question sur SO pourrait t'aider.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre averti
    Inscrit en
    Juin 2002
    Messages
    38
    D�tails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 38
    Par d�faut
    Je me suis mal exprim� au 1� post : ma page test s'affiche correctement dans le webBrowser.
    En revanche, je ne peux r�cup�rer que environ le quart du code source de la page, dans une String^.

    A l'exec, le programme me dit que "la valeur de la propri�t� "$" est null ou non d�finie, pas un objet Function", 2 fois � la m�me ligne.

    Code: 0

    Puis le prog me dit que "l'objet ne g�re pas la propri�t� ou la m�thode "reduce".

    Toujours Code: 0

    Dans le String^, j'aurai r�cup�r� le source de la page jusqu'� la ligne de l'erreur propri�t� "$" est null ou non d�finie.


    J'ai essay� une bidouille avec un httpWebRequest.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
     
    			String^ PATH = "file:///C:/C++/test/ressources/page_test.htm";
    			WebRequest^ Request = WebRequest::Create(PATH);
    			HttpWebResponse^ Response = dynamic_cast<HttpWebResponse^>(Request->GetResponse());
     
    			Request->Credentials = CredentialCache::DefaultCredentials;
    			Response = dynamic_cast<HttpWebResponse^>(Request->GetResponse());
    			Stream^ Stream1 = Response->GetResponseStream();
    			StreamReader^ SReader = gcnew StreamReader(Stream1);
    			String^ Responsestring = SReader->ReadToEnd();
     
    			SReader->Close();
    			Stream1->Close();
    			Response->Close();

    Ce code g�n�re � l'exec l'erreur "An unhandled exception of type 'System.NullReferenceException' occured in Project1.exe

    Additionnal information: La r�f�rence d'objet n'est pas d�finie � une instance d'un objet.

    Je suis en train d'essayer d'installer libcurl, mais c'est tout sauf simple, ce machin, pour celui qui bidouille une fois tous les 6 mois ...

    Merci d'avance pour tout �clairage.
    C'est quand m�me bizarre que le webBrowser puisse afficher la page, mais soit infoutu de r�cup�rer son code source !!!

  4. #4
    Expert confirm�
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2005
    Messages
    5 505
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 5 505
    Par d�faut
    Je ne comprends pas votre d�marche.

    Si c'est pour comprendre pourquoi il y a des erreurs JavaScript, bin, faut d�boguer le JavaScript, pas faire une usine � gaz pour r�cup�rer le code de la page Web.

    Des outils dans le navigateur (F12 pour IE) ou � part comme Fiddler2 permettent de facilement voir le contenu des fichiers charg�es par le navigateur, qui sont largement plus nombreux que la page web elle-m�me.

    Ce code g�n�re � l'exec l'erreur "An unhandled exception of type 'System.NullReferenceException' occured in Project1.exe
    Bin, pourquoi n'utilisez-vous pas tout simplement le d�bogueur pour savoir d'o� �a vient ?
    Mais, bon, je pense que ce code est totalement inutile si vous prenez les outils ad�quate, je pense.

    P.S.: votre code est tr�s �trange (Webrequest sur un "file:" ?,2 GetResponse ???) et peu s�r (la gestion des "Continue" status 100 de HTTP ?)

    Je suis en train d'essayer d'installer libcurl, mais c'est tout sauf simple, ce machin, pour celui qui bidouille une fois tous les 6 mois ...
    Si vous pouvez basculer sur une code libcurl, autant utiliser des outils d�di�es et pas r�inventer la roue (et un client HTTP, c'est une putain de roue cosmique).

    C'est quand m�me bizarre que le webBrowser puisse afficher la page, mais soit infoutu de r�cup�rer son code source !!!
    Le WebBrowser, c'est juste un wrapper autour d'un composant COM "Navigateur" et il faut bien plus qu'un simple fichier "htm" pour afficher une page de nos jours (les .css, les IFRAME, les .scripts, <IMG>, les <OBJECT>, etc...)
    Le chargement d'une "page web", c'est tr�s souvent plusieurs dizaines de fichiers t�l�charg�s, tr�s souvent avec des pages qui s'incluent dans d'autres pages qui s'incluent dans d'autres etc...
    Une page qui contient des IFRAME qui contient des scripts => le code n'est pas dans le "code source" de la page mais dans le code source d'une page script "incluse" d'une page HTML (l'IFRAME) qui est "incluse" dans la page initiale.

    Donc, vous prenez pas la t�te � refaire une roue et utilisez des outils adapt�s.

  5. #5
    Membre averti
    Inscrit en
    Juin 2002
    Messages
    38
    D�tails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 38
    Par d�faut
    Merci d'avoir pris le temps de me r�pondre.

    Citation Envoy� par bacelar Voir le message
    Je ne comprends pas votre d�marche.

    Si c'est pour comprendre pourquoi il y a des erreurs JavaScript, bin, faut d�boguer le JavaScript, pas faire une usine � gaz pour r�cup�rer le code de la page Web.
    Les erreurs javascript de la page, �a m'est �gal. C'est un extrait du texte de la page qui m'int�resse, sachant que des pages comme �a, il y en aura 200 ou 300 � charger et � exploiter (donc, CTRL+U de firefox, on oublie).

    Citation Envoy� par bacelar Voir le message
    votre code est tr�s �trange (Webrequest sur un "file:" ?,2 GetResponse ???) et peu s�r (la gestion des "Continue" status 100 de HTTP ?)
    C'est un code que j'ai r�cup�r� sur un forum (stackoverflow, ou similaire), donn� par google + C++ + httpwebrequest + get page
    Je ne me suis pas pos� de questions.

    Citation Envoy� par bacelar Voir le message
    Le chargement d'une "page web", c'est tr�s souvent plusieurs dizaines de fichiers t�l�charg�s, tr�s souvent avec des pages qui s'incluent dans d'autres pages qui s'incluent dans d'autres etc...
    Effectivement, il manque pleins d'images et autres jolis boutons, sur la page charg�e dans le webBrowser, mais j'ai l'essentiel dans le webB : le texte de la page.

    Or, ce texte, il en manque les 3/4dans ma String^.

    L'id�e de r�cup�rer libcurl, pareil : google.

    Je me dis na�vement que si le texte qui m'int�resse s'affiche dans le webBrowser, c'est que la page source html est d�chiffr�e au moins correctement jusqu'� ce stade.

    Je suis d'accord, pour l'invention de la roue et de l'eau chaude.
    Les outils d�di�s, j'ai probablement pas fait la bonne recherche avec google, mais je suis preneur d'une piste ...

  6. #6
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    Ton probl�me, c'est qu'une partie du contenu de la page peut avoir en fait �t� g�n�r� c�t� client par le javascript. Et un code qui ne r�cup�re que la source HTML initiale n'aura pas �a.

    Edit: D'ailleurs, une bonne exp�rience peut �tre d'ouvrir ledit site avec le javascript d�sactiv�. Si tu as firefox, l'extension QuickJava permet d'activer/d�sactiver javascript (et pas mal d'autres choses) en un clic.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

Discussions similaires

  1. [iOS] R�cup�rer le code source d'une page web
    Par aliasc dans le forum Objective-C
    R�ponses: 6
    Dernier message: 12/01/2011, 12h03
  2. R�cup�rer le code source d'une page web
    Par hassine dans le forum C#
    R�ponses: 6
    Dernier message: 08/11/2010, 11h46
  3. R�cup�rer la source d'une page web
    Par Pooch dans le forum C#
    R�ponses: 5
    Dernier message: 13/08/2010, 21h52
  4. R�ponses: 0
    Dernier message: 09/01/2010, 23h07
  5. R�cup�rer le code source d'une page web
    Par glRaZ dans le forum C++Builder
    R�ponses: 4
    Dernier message: 08/12/2004, 09h16

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