2009-07-14 7 views
5

J'essaie d'utiliser C# pour accéder au contenu d'une page Web. Par exemple, je veux saisir le texte du corps de la page d'accueil google.Accéder au contenu d'une page Web avec C#

Je sais que c'est faisable en C# avec son contrôle de navigateur web. Mais je ne pouvais pas trouver un bon exemple simple de le faire. Toutes les ressources que j'ai trouvées en ligne impliquent la création de formulaires et de GUI, dont je n'ai pas besoin, j'ai juste besoin d'une bonne vieille console.

Si quelqu'un peut fournir un simple extrait de code basé sur la console qui accomplit ce qui précède, il sera grandement apprécié.

Répondre

12

En fait, le WebBrowser est un contrôle GUI utilisé dans le cas où vous souhaitez visualiser une page Web (intégrer et gérer Internet Explorer dans votre application Windows). Si vous avez juste besoin d'obtenir le contenu d'une page Web, vous pouvez utiliser la classe WebClient:

class Program 
{ 
    static void Main(string[] args) 
    { 
     using (var client = new WebClient()) 
     { 
      var contents = client.DownloadString("http://www.google.com"); 
      Console.WriteLine(contents); 
     } 
    } 
} 
+3

Cela ne fonctionnera pas si le site est généré dynamiquement en javascript (c'est-à-dire, si la source html est juste un fichier .js), n'est-ce pas? – Saobi

+0

+1 Bien fait. –

+1

@Saobi, vous avez raison, javascript ne sera pas exécuté avec cette technique. Vous obtiendrez uniquement la représentation en texte brut de la page Web. –

0

Le HTML Agility Pack peut-être ce dont vous avez besoin. Il donne accès aux pages HTML via DOM et XPath.

1

Vous pouvez faire quelque chose comme ceci:

Uri u = new Uri(@"http://launcher.worldofwarcraft.com/alert"); 
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(u); 
HttpWebResponse res = (HttpWebResponse)req.GetResponse(); 
System.IO.Stream st = res.GetResponseStream(); 
System.IO.StreamReader sr = new System.IO.StreamReader(st); 
string body = sr.ReadToEnd(); 
System.Console.WriteLine("{0}", body); 

le code ci-dessus montre le message de maintenance pour WoW USA (si un message a été posté)

1

Vous pouvez également utiliser la bibliothèque Watin pour charger et manipuler les pages Web facilement. Cela a été conçu comme une bibliothèque de test pour les interfaces Web. Pour l'utiliser obtenir les dernières sur le site officiel http://watin.sourceforge.net/. Pour C#, le code suivant dans une application de console vous donnera le code HTML de la page d'accueil de Google (ceci est modifié à partir de l'exemple de démarrage sur le site WatiN). La bibliothèque contient également de nombreuses autres méthodes utiles pour obtenir et définir différentes parties de la page, prendre des mesures et vérifier les résultats.

using System; 
    using WatiN.Core; 

    namespace Test 
    { 
     class WatiNConsoleExample 
     { 
     [STAThread] 
     static void Main(string[] args) 
     { 
      // Open an new Internet Explorer Window and 
      // goto the google website. 
      IE ie = new IE("http://www.google.com"); 

      // Write out the HTML text of the body 
      Console.WriteLine(ie.Text); 


      // Close Internet Explorer and the console window immediately. 
      ie.Close(); 

      Console.Readkey(); 
     } 
     } 
    } 
0

L'effacement de l'écran de Google et comme mentionné ci-dessus utilisent le HttpWebRequest. Quand vous faites ce que vous faites, je vous recommande d'utiliser Fiddler pour vous aider à comprendre ce qui se passe vraiment.

Questions connexes