Charger une page html source ou texte dans une string

Soyez le premier à donner votre avis sur cette source.

Snippet vu 15 306 fois - Téléchargée 26 fois

Contenu du snippet

ouvrir un internet explorer, charger une url et rappatrier la page html (source ou texte) dans une variable
ajouter les references
Microsoft HTML Object Library
Microsoft Internet Controls

Source / Exemple :


InternetExplorer ie;
ie = new InternetExplorerClass();
Object o = null;
ie.Navigate("votre url",ref o,ref o,ref o,ref o);
//rend visible ie
ie.Visible=true;
//attend que la page soit chargée
do
{
System.Windows.Forms.Application.DoEvents();
}
while (ie.ReadyState != SHDocVw.tagREADYSTATE.READYSTATE_COMPLETE);
//pour la source
string source = ((mshtml.HTMLDocumentClass)(ie.Document)).documentElement.innerHTML; 
//pour le text
string text = ((mshtml.HTMLDocumentClass)(ie.Document)).documentElement.innerText;
ie.Quit();

A voir également

Ajouter un commentaire

Commentaires

Messages postés
15
Date d'inscription
lundi 25 juin 2001
Statut
Membre
Dernière intervention
15 juin 2006

Je viens de trouver ! voici le code qui me permet d'éviter se probleme !



mshtml.HTMLDocumentClass docObject=new mshtml.HTMLDocumentClass();
mshtml.IHTMLDocument2 doc2 =docObject;
mshtml.IHTMLDocument4 doc4=docObject;


doc2.writeln("<html></html>");
doc2.close();
doc2=doc4.createDocumentFromUrl(strUnLien,"");

for (;doc2.readyState!="complete";)
{
System.Windows.Forms.Application.DoEvents();
}

string source=doc2.body.innerHTML;
Messages postés
15
Date d'inscription
lundi 25 juin 2001
Statut
Membre
Dernière intervention
15 juin 2006

Bonjour

J'ai le même problème !
Des fois mon programme récupère toute la page des fois juste le <Head> </Head>

Quelqu'un à t-il une idée ?
Messages postés
12
Date d'inscription
mercredi 29 janvier 2003
Statut
Membre
Dernière intervention
17 novembre 2006

Je suis obligé pour ma part de passer par Internet explorer (restriction du routeur).
J'utilise donc la propriété "innerHTML" pour récupérer les sources dans un string.
Mais je me retrouve souvent avec une page incomplète, coupé après la balise </HEAD> par exemple.
Est ce que cela peut venir de la limite de taille d'un string ?
Si oui comment faire autrement ?
Merci d'avance.
Messages postés
134
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
23 décembre 2009

ps: HttpWebRequest est dans le framework1.1 (si vous ne le trouver pas)
Messages postés
134
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
23 décembre 2009

ici :
http://www.csharpfr.com/code.aspx?id=31186
et ici :
http://www.csharpfr.com/code.aspx?id=11403

En clair, il suffit de connaitre un peut l'HTTP (très facile) et construire la requête à envoyer.
L'avantage est de ne pas à avoir ouvrir ie (pour pas faire râler les utilisateur de firefox et gagner en ressources machines) et aussi pour pouvoir lire la réponse du serveur intégralement (les redirections, message 404, 403, ...).

C'est très utile pour allez sur des site avec accès restreint. Il suffit d'envoyer par POST le formulaire et renvoyer les cookies de sessions à chaque fois.

Bien sur c'est plus long à coder que l'exemple qui est présenté mais nettement plus efficace et plus pratique pour l'utilisateur final.
Afficher les 7 commentaires

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.