2009-03-04 17 views
3

Wie können Sie sich auf einer Webseite anmelden und den Inhalt in C# abrufen?Wie können Sie sich auf einer Webseite anmelden und den Inhalt in C# abrufen?

+0

habe ich downmod Sie nicht, aber Sie sollten Ihre Frage anders formulieren. Versuchen Sie, eine ASP.NET-Webseite mit Anmeldefunktionen zu erstellen? Oder versuchen Sie nur, sich auf einer Webseite anzumelden? – Randolpho

+0

Das ergibt keinen Sinn. –

+0

Ich war anfangs auch verwirrt, aber nachdem ich es ein paar Mal gelesen habe, bin ich mir ziemlich sicher, dass er Screen Scraping bedeutet. –

Antwort

2
string postData = "userid=ducon"; 
      postData += "&username=camarche" ; 
      byte[] data = Encoding.ASCII.GetBytes(postData); 
      WebRequest req = WebRequest.Create(
       URL); 
      req.Method = "POST"; 
      req.ContentType = "application/x-www-form-urlencoded"; 
      req.ContentLength = data.Length; 
      Stream newStream = req.GetRequestStream(); 
      newStream.Write(data, 0, data.Length); 
      newStream.Close(); 
      StreamReader reader = new StreamReader(req.GetResponse().GetResponseStream(), System.Text.Encoding.GetEncoding("iso-8859-1")); 
      string coco = reader.ReadToEnd(); 
3

Betrachten Sie System.Net.WebClient, oder für weitergehende Anforderungen System.Net.HttpWebRequest/System.Net.HttpWebResponse.

Für die tatsächliche Anwendung dieser: Sie müssen die HTML-Quelle von jeder Seite, die Sie scrape lernen wollen, um genau zu erfahren, was Http fordert es erwartet.

5

Das hängt davon ab, was zum Anmelden erforderlich ist. Sie können einen Webclient verwenden, um die Anmeldeinformationen an die Anmeldeseite des Servers zu senden (über die erforderliche Methode GET oder POST), aber das hält einen Cookie nicht an. Es gibt eine way, um einen Webclient zu bekommen, der mit Cookies umgehen kann, also könnten Sie einfach die Login-Informationen an den Server senden, dann die gewünschte Seite mit demselben Webclient anfordern und dann mit der Seite machen, was Sie wollen.

1

Verwenden Sie die Klasse WebClient.

Dim Html As String 

Using Client As New System.Net.WebClient() 
    Html = Client.DownloadString("http://www.google.com") 
End Using 
+2

Ich wusste nichts über DownloadString - super - danke! – Slee

+0

Warum wurde das abgelehnt? –

+0

Er fragte nach C# -Code, wahrscheinlich (es war nicht ich, die es downvoted) – JohnFx

2

Wie meinst du "Login"?

Wenn der Unterordner auf Betriebssystemebene geschützt ist und der Browser ein Anmeldedialogfeld öffnet, wenn Sie dorthin gehen, müssen Sie die Credentials-Eigenschaft für HttpWebRequest festlegen.

Wenn die Website ein eigenes Cookie-basiertes Mitgliedschafts-/Anmeldesystem hat, müssen Sie HttpWebRequest zur ersten Antwort auf das Anmeldeformular verwenden.

-2

Versuchen Sie folgendes:

public string GetContent(string url) 
{ 
    using (System.Net.WebClient client =new System.Net.WebClient()) 
    { 
    return client.DownloadString(url); 
    } 
} 
1

Sie können den Bau in der WebClient-Objekt verwenden, anstatt die Anfrage selbst von Kistenverpackungen.

WebClient wc = new WebClient(); 
wc.Credentials = new NetworkCredential("username", "password"); 
string url = "http://foo.com";   
try 
{ 
    using (Stream stream = wc.OpenRead(new Uri(url))) 
    { 
     using (StreamReader reader = new StreamReader(stream)) 
     { 
      return reader.ReadToEnd(); 
      } 
    } 
} 
catch (WebException e) 
{ 
    //Error handeling 
} 
Verwandte Themen