Quelltext einer Webseite in Textbox speichern
Hallo liebe Community,
ich habe heute den ganzen Tag damit verbracht, wie man den Quelltext in einer Textbox speichern kann, doch bisher immernoch nichts gefunden.
Bei dem .NET Framework konnte man das ja ganz einfach über die "Webbrowser1.documenttext" Funktion machen, leider geht das unter .NET Compact Framework nicht, da diese Funktion ja nur WriteOnly ist.
Kennt ihr vielleicht eine Funktion wie ich sonst noch den Quelltext erhalte? Ich programmiere unter Visual Basic 2008.
LG S!lver
AW: Quelltext einer Webseite in Textbox speichern
Ist zwar C#...
Code:
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.news.ch");
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
StreamReader reader = newStreamReader(response.GetResponseStream());
string result = reader.ReadToEnd();
response.Close();
AW: Quelltext einer Webseite in Textbox speichern
Ja, sowas ähnliches habe ich schon:
Code:
Dim myRequest As System.Net.WebRequest = System.Net.WebRequest.Create("http://welt6.travian.de/dorf1.php")
Dim myResponse As System.Net.WebResponse = myRequest.GetResponse()
Dim myStream As System.IO.Stream = myResponse.GetResponseStream()
Dim myReader As New System.IO.StreamReader(myStream)
TextBox1.Text = myReader.ReadToEnd
myReader.Close()
Leider gibt es dabei ein Problem. Bevor ich zu der Seite komme, auf der ich den Quelltext auslesen möchte, muss ich mich mit Benutzername und Passwort einloggen.
Ich habe zwar die URL eingegeben, die kommt sobald ich mich eingeloggt habe, jedoch bekomme ich immer nur den Quelltext der Seite, auf der ich das Passwort eingeben muss.
Gibt es nicht ne Möglichkeit den Quelltext direkt aus dem Webbrowser auszulesen?
AW: Quelltext einer Webseite in Textbox speichern
Vielleicht noch Folgendes setzen?
Code:
request.Credentials = newNetworkCredential("userName", "password");
request.PreAuthenticate = true;
AW: Quelltext einer Webseite in Textbox speichern
Sollte ich das dann vor oder nach der Zeile
Dim myRequest As System.Net.WebRequest = System.Net.WebRequest.Create("http://welt6.travian.de/dorf1.php")
schreiben?
Naja, also diese Methode hört sich soweit erstmal garnicht schlecht an, vielleicht klappt es damit, aber weisst du vielleicht auch wie ich das in VB realisieren könnte? Ich kenne mich mit dem Befehl leider nicht aus.
AW: Quelltext einer Webseite in Textbox speichern
nach dem Create
myRequest.Credentials = New NetworkCredential("userName", password")
P.S.: Versuch's mal, bin mir aber nicht sicher, ob das wirklich so einfach gehen wird. Vielleicht müsste man die myRequest.Method = "POST" setzen.
AW: Quelltext einer Webseite in Textbox speichern
Okay, also momentan siehts so aus:
Dim myRequest As System.Net.WebRequest = System.Net.WebRequest.Create("http://welt6.travian.de/dorf1.php")
myRequest.Credentials = New System.Net.NetworkCredential("user", "password")
Dim myResponse As System.Net.WebResponse = myRequest.GetResponse()
Dim myStream As System.IO.Stream = myResponse.GetResponseStream()
Dim myReader As New System.IO.StreamReader(myStream)
TextBox1.Text = myReader.ReadToEnd
myReader.Close()
Soweit so gut, das Programm läuft auch und zeigt keine Fehler. Das Problem ist nur leider immernoch das selbe. Bekomme nur den Quelltext der Anmeldeseite angezeigt.
AW: Quelltext einer Webseite in Textbox speichern
Nun, selber habe ich das noch nie ausprobiert...
Hier die msdn Seite über Credentials (mit Beispiel)
http://msdn.microsoft.com/en-us/libr...edentials.aspx
Nun, wenn die Method = "POST" gesetzt ist, kann man irgendwelche Info dem Request mitgeben.
http://msdn.microsoft.com/en-us/libr...ntenttype.aspx
(dann muss man noch ContentType und ContentLenth setzen, siehe Beispiel)
Vielleicht hilft das weiter!
AW: Quelltext einer Webseite in Textbox speichern
Ok, vielen Dank, vielleicht hilft mir das ja weiter.
Werde mir das dann morgen mal anschauen und ausprobieren. Muss halt in 5 Stunden wieder aufstehen und zur Arbeit gehn :(
Habe auch noch jemanden gefunden der das Selbe Problem hat wie ich:
http://entwickler-forum.de/showthread.php?t=45146
Vielen Dank erstmal für deine Hilfe. Vielleicht klappt es ja dann morgen.
AW: Quelltext einer Webseite in Textbox speichern
Also ich habs mal damit probiert, bringt aber leider auch nicht den gewünschten Erfolg, oder ich habe mich einfach zu dämlich/unerfahren angestellt!?!
Das habe ich probiert:
Dim request As HttpWebRequest = CType(WebRequest.Create(args(0)), HttpWebRequest)
request.MaximumAutomaticRedirections = 4
request.Credentials = CredentialCache.DefaultCredentials
Dim response As HttpWebResponse = CType(request.GetResponse(), HttpWebResponse)
Console.WriteLine("Content length is {0}", response.ContentLength)
Console.WriteLine("Content type is {0}", response.ContentType)
Dim receiveStream As Stream = response.GetResponseStream()
Dim readStream As New StreamReader(receiveStream, Encoding.UTF8)
TextBox1.Text = readStream.ReadToEnd()
response.Close()
readStream.Close()
Ein Problem zeigt er beim Debuggen wegen dem "args" in der ersten Code-Zeile an. Woran kann das liegen, und was sollte ich da eintragen? Ist diese Funktion überhaupt für mein Projekt realisierbar oder komme ich damit auch nicht weiter?
LG S!lver
AW: Quelltext einer Webseite in Textbox speichern
Gebe es denn nicht vielleicht auch die Möglichkeit den Benutzername und das Passwort auch direkt über die URL zu übergeben?
Also z.B. so:
Dim myRequest As System.Net.WebRequest = System.Net.WebRequest.Create("http://welt6.travian.de/dorf1.php?name=username&pwd=passwort")
Dim myResponse As System.Net.WebResponse = myRequest.GetResponse()
Dim myStream As System.IO.Stream = myResponse.GetResponseStream()
Dim myReader As New System.IO.StreamReader(myStream)
TextBox1.Text = myReader.ReadToEnd
myReader.Close()
Also mit der URL "http://welt6.travian.de/dorf1.php?name=username&pwd=passwort" kann ich meine Daten an die Login-Seite weitergeben. Leider funktioniert das momentan nur mit dem Benutzernamen, aber anscheinend scheint die Variable "pwd" nicht für das Passwort-Feld zu funktionieren. Welche Variable könnte ich stattdessen verwenden?
Würde das denn auch funktionieren sich mit dieser Methode dort anzumelden?
AW: Quelltext einer Webseite in Textbox speichern
Nun, vielleicht hilft Dir das hier weiter:
http://forums.asp.net/p/1197857/2076276.aspx
So kann man die Logindaten an die Seite schicken.
(args(0) ist die url, da in diesem Beispiel das Ganze in der Methode main(... args...) aufgerufen wird)
AW: Quelltext einer Webseite in Textbox speichern
Sry, aber das klappt so nicht.
Leider kennt die .NET Compact Framework die Hälfte der angegebenen Befehle nicht. :(
Aber es muss doch irgend eine andere Möglichkeit geben an dieser Login-Seite vorbeizukommen!?
Weiss denn niemand wie ich den Quelltext eines Webbrowser-Elements auslesen kann? Also einfach nur eine andere Funktion für:
Textbox1.Text = Webbrowser1.DocumentText
Das würde mir soweit erstmal einen riesigen Aufwand ersparen. Am besten natürlich noch in VB geschrieben, aber vielleicht kann ich auch andere Sprachen "umwandeln".
LG S!lver
AW: Quelltext einer Webseite in Textbox speichern
hast du denn die namespaces "geused"?
also using System.Net etc?
VB zu c# und zurück: http://www.developerfusion.com/tools.../vb-to-csharp/
und übrigens:
http://msdn.microsoft.com/en-us/libr...umenttext.aspx
Du kannst die Eigenschaft Webbrowser.DocumentText setzen und lesen, also müsste doch
Textbox1.Text = Webbrowser1.DocumentText klappen.
AW: Quelltext einer Webseite in Textbox speichern
Ja, die System, System.Net und System.IO habe ich geused.
Die Seite mit dem Code-Umwandler is ne super Seite, werde mir die speichern. Habe auch mal den zuletzt angegebenen C# Code umgewandelt. Das Ergebnis ist aber weniger ernüchternd, denn genauso habe ich das auch umgeschrieben. :(
Ja, die MSDN Seite die du verlinkt hast, ist leider nur für das .NET Framework, nicht aber für das .NET Compact Framework. In der VB Beschreibung über DocumentText steht zwar als Infotext "Gets or sets the HTML contents of the page displayed in the WebBrowser control.", jedoch wenn ich "TextBox1.Text = Webbrowser1.DocumentText" schreibe, zeigt er in der Konsole immer an das die Variable DocumentText nur WriteOnly ist. Hatte auch mal was gelesen das das anscheindend nen Bug von Microsoft ist, weiss aber nich so genau ob das auch stimmt.
Irgendwie funktioniert das nicht in der Compact Version. Oder kann ich die Variable irgendwie auch als ReadOnly setzen?
AW: Quelltext einer Webseite in Textbox speichern
So, ich habe nun nochmal den C# Code in den Konverter kopiert und das umgewandelte in mein VS 2008 kopiert.
Also bis auf die Befehle:
request.MaximumResponseHeadersLength = 4
und
response.Write(strresponse)
scheint nun alles zu funktionieren, jedoch bekomme ich immernoch nur den Quelltext der Login-Seite angezeigt. Zur Anmeldung habe ich diesen Code eingefügt:
Dim postData As String = "name='mein_benutzername'&password='mein_passwort"
ich glaube die Webseite kann mit der Variable 'password' nichts anfangen. Mit 'name' habe ich es schon probiert und es klappt, aber die andere funzt nicht.
Welche anderen Variablen-Bezeichnungen könnte ich angeben, oder wie kann ich die benötigte Variable für das Passwort auslesen?
Habe schon folgende Variablen probiert: passw, pass, pwd, pw, pwt, passwort, password
Mehr fallen wir soweit nicht ein. Euch vielleicht?
AW: Quelltext einer Webseite in Textbox speichern
Schau halt im quellcode der seite nach ;-) Das steht ja im <form> bereich, die namen der input-tags.
AW: Quelltext einer Webseite in Textbox speichern
Da folgt das nächste Problem. Dem Quelltext der Login-Seite sind leider keine Informationen über die Variablen zu entlocken.
Es gibt nur 6 Input-Tags im Quelltext:
<input type="hidden" name="w" value="">
<input type="hidden" name="login" value="1225380516">
<input class="fm fm110" type="text" name="e6be698" value="" maxlength="15"> <span class="e f7"></span>
<input class="fm fm110" type="password" name="e2bf6e0" value="" maxlength="20"> <span class="e f7"></span>
<input type="image" value="login" border="0" name="s1" src="img/de/b/l1.gif" width="80" height="20" onMousedown="btm1('s1','','img/de/b/l2.gif',1)" onMouseover="btm1('s1','','img/de/b/l3.gif',1)" onMouseUp="btm0()" onMouseOut="btm0()" onClick="xy()">
</input></p></form></div></div></div><div id="lright1">
Habe schon alles was hinter 'name=' steht versucht, doch es funktioniert mit diesen Variablen leider nicht, das Passwort in die Textbox zu bekommen. :(
AW: Quelltext einer Webseite in Textbox speichern
na, doch. die variablen heissen e2bf6e0 für's Passwort und das login scheint mit login=1225380516 fix zu sein. eventuell wird die seite komplett dynamisch erstellt?
aber das ist nun wirklich off topic
AW: Quelltext einer Webseite in Textbox speichern
Sorry, aber so einfach ist das halt leider nicht. Wie gesagt, habe schon alles nach 'name=' ausprobiert, auch 'e2bf6e0', doch es funktioniert nicht.
Außerdem ändert sich die Variable für Passwort und Benutzername , also das was hinter 'name=' steht, ständig, d.h. wenn es jetzt funktionieren würde, gäbe es später wieder Probleme.
Probiert's doch aus, es geht leider nicht: http://welt3.travian.de
Das ist die Login-Seite. Also mit 'name=Benutzername' funktionierts, nur leider mit dem Passwort nicht...
LS S!lver