2016-05-23 16 views
0

Ich habe versucht zu sehen, ob ich Fahrplandaten einer Schulwebsite bekommen könnte, und mache eine kleine Anwendung davon. Im Moment ist es das, was ich habe:C# Lesen von Daten aus html

string userInput = "/*My username will be here*/"; 
string passInput = "/*My password will be here */"; 

string formUrl = "https://portal.gc.ac.nz/student/index.php/process-login"; 
string formParams = string.Format("username={0}&password={1}", userInput, passInput); 
string cookieHeader; 

WebRequest req = WebRequest.Create(formUrl); 
req.ContentType = "application/x-www-form-urlencoded"; 
req.Method = "POST"; 
byte[] bytes = Encoding.ASCII.GetBytes(formParams); 
req.ContentLength = bytes.Length; 
using (Stream os = req.GetRequestStream()) 
{ 
    os.Write(bytes, 0, bytes.Length); 
} 
WebResponse resp = req.GetResponse(); 
cookieHeader = resp.Headers["Set-cookie"]; 

string pageSource; 
string getUrl = "https://portal.gc.ac.nz/student/index.php/timetable"; 
WebRequest getRequest = WebRequest.Create(getUrl); 
getRequest.Headers.Add("Cookie", cookieHeader); 
WebResponse getResponse = getRequest.GetResponse(); 
using (StreamReader sr = new StreamReader(getResponse.GetResponseStream())) 
{ 
    pageSource = sr.ReadToEnd(); 
} 

ich keine Möglichkeit zu überprüfen, ob obige Code funktioniert, aber meine Frage gefunden:

Wie können Sie die Daten (Texte) zugreifen Sie wollen von der Seite? Ich möchte die Betreff-Namen erhalten. Ein Teil des HTML sieht wie folgt aus:

html

+0

Müssen Sie dies über C# tun? Ich denke, es ist viel einfacher, die Daten über Javascript zu lesen. Wenn Sie die Daten für weitere Aktionen in C# nicht benötigen, können Sie dies mit einem einfachen JavaScript-Snippet tun. – Marius

+3

Verwenden Sie ['HtmlAgilityPack'] (http://htmlagilypack.codeplex.com/), um HTML –

+0

zu analysieren, was ist mit der Dokumentation von [dieser Software] (https://www.kamar.nz/)? Ich meine, haben Sie die Dokumentation der Webanwendung überprüft, um eine eventuell vorhandene Exportfunktion zu finden? das würde Ihren Job erheblich vereinfachen ... – Paolo

Antwort

0

Es gibt ein paar Möglichkeiten, dies zu tun: man wäre regexp Matching und den Inhalt der Tags zu nehmen und eine andere wäre, nur HtmlAgilityPack Bibliothek verwenden.

Wenn Sie es nicht in C# tun müssen, würde ich dringend eine andere Sprache wie Python oder Perl empfehlen. Es scheint mir, dass Sie versuchen, die Daten zu scrappen und in diesem Fall empfehle ich dringend, das Scrapy-Framework von Python zu verwenden, wenn möglich. Es ist das beste Werkzeug, das ich beim Scraping gefunden habe, und Sie können XPath verwenden, um Ihre Daten einfach zu erhalten. Hier ist die link to Scrapy's website.

+0

Danke! Ich werde sie anschauen. Vielleicht überlege Python :) –