2009-07-14 5 views
5

Sto tentando di utilizzare C# per accedere al contenuto di una pagina Web. Ad esempio, voglio prendere il testo del corpo della home page di google.Accedere al contenuto di una pagina Web con C#

So che questo è possibile in C# con il controllo del browser web. Ma non sono riuscito a trovare un buon esempio semplice di farlo. Tutte le risorse che ho trovato online riguardano la creazione di moduli e GUI, di cui non ho bisogno, ho solo bisogno di una buona vecchia applicazione console.

Se qualcuno può fornire un semplice frammento di codice basato su console che soddisfa quanto sopra, sarà molto apprezzato.

risposta

12

In realtà il WebBrowser è un controllo della GUI utilizzato nel caso in cui si desideri visualizzare una pagina Web (incorporare e gestire Internet Explorer nell'applicazione Windows). Se avete solo bisogno di ottenere il contenuto di una pagina web è possibile utilizzare 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

Questo non funzionerà se il sito web è generato dinamicamente in javascript (cioè, se il sorgente html è solo .js file), giusto? – Saobi

+0

+1 Ben fatto. –

+1

@Saobi, sei corretto, javascript non verrà eseguito con questa tecnica. Si otterrà solo la rappresentazione in tinta unita della pagina web. –

0

Il HTML Agility Pack potrebbe essere quello che ti serve. Fornisce l'accesso alle pagine HTML tramite DOM e XPath.

1

Si può fare qualcosa di simile:

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); 

il codice qui sopra mostra il messaggio di manutenzione per WoW USA (se presente messaggio è stato postato)

1

È inoltre possibile utilizzare la libreria WatiN per caricare e manipolare facilmente le pagine Web. Questo è stato progettato come una libreria di test per le interfacce utente web. Per utilizzarlo ottenere le ultime dal sito ufficiale http://watin.sourceforge.net/. Per C# il seguente codice in un'applicazione console ti fornirà l'HTML della home page di Google (questo viene modificato dall'esempio per iniziare sul sito WatiN). La libreria contiene anche molti altri metodi utili per ottenere e impostare varie parti della pagina, intraprendere azioni e controllare i risultati.

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

Google screen scraping e come accennato in precedenza utilizzano HttpWebRequest. Quando fai qualunque cosa tu stia facendo, ti consiglio di usare Fiddler per aiutarti a capire cosa sta veramente succedendo.