myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » GUI: Windows-Forms » Alle angezeigten Texte im WebBrowser-Control auslesen
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

Alle angezeigten Texte im WebBrowser-Control auslesen

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Patboy Patboy ist männlich
myCSharp.de-Mitglied

Dabei seit: 16.06.2010
Beiträge: 7


Patboy ist offline

Alle angezeigten Texte im WebBrowser-Control auslesen

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo Liebe C# Programmierer...

bin schon seit längeren auf der Suche für eine Lösung meines Problems...

Ich habe mit MVS2008 ein C# projekt erstellt. Und zwar habe ich vor auf einer Internet
Seite automatisch alle texte abzuspeichern und zu bearbeiten.

Also habe ich einen einfach WebBrowser in die Form1 gezogen und habe dort die Seite aufgerufen.

Dann surfe ich zur Richtigen Seite und dann will ich mit Klick auf einen Button alle Texte auf der Seite auslesen und abspeichern...
Nur das Problem ist das dieser Text nicht im Quellcode ist, somit habe ich keine Ahnung wie ich das anstellen kann...

Im Quellcode sind z.b. funktionen aber kein wirklicher text, aber auf der seite selbst sieht man aber trotzdem texte, wie zum Beispiel
Benutzernamen (siehe Anhang). Nun würde ich zum beispiel diese namen abpeichern in ein string array.

Würde mich gerne um eine kleine hilfe freuen,

Mfg Patrick alias Patboy

Patboy hat dieses Bild (verkleinerte Version) angehängt:
Unbenannt.png
Volle Bildgröße

Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von Patboy am 16.06.2010 19:43.

16.06.2010 19:38 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
h0scHberT
myCSharp.de-Mitglied

Dabei seit: 23.05.2008
Beiträge: 89


h0scHberT ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

ist es vielleicht Flash?
schonmal mit Firebug unter die Lupe genommen?
16.06.2010 22:23 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Patboy Patboy ist männlich
myCSharp.de-Mitglied

Dabei seit: 16.06.2010
Beiträge: 7

Themenstarter Thema begonnen von Patboy

Patboy ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

naja glaube eher nicht das es flash ist, da ich es ja sonst mit dem c# webbrowser ja nicht öffnen könnte oder??

und firebug hat auch kein ergebnis gebracht, nichts zu finden.

Aber ich denke mir die ganze zeit, ich sehe den text ja, der muss ja irgendwo gespeichert sein, und von da müsste ich ihn ja herauslesen können, doer irre ich da?
16.06.2010 23:06 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
blutiger_anfänger blutiger_anfänger ist männlich
myCSharp.de-Mitglied

avatar-178.gif


Dabei seit: 26.04.2008
Beiträge: 293
Entwicklungsumgebung: VS 2013
Herkunft: Meerbusch, NRW


blutiger_anfänger ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Wenn es kein Flash ist und angezeigt wird. Dann, behaupte ich, ist es auch möglich an die Texte zu kommen. Würdest du mal den Link zur Seite posten? Dann werde ich gerne mal einen Blick drauf. ;)
17.06.2010 00:14 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Patboy Patboy ist männlich
myCSharp.de-Mitglied

Dabei seit: 16.06.2010
Beiträge: 7

Themenstarter Thema begonnen von Patboy

Patboy ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

also um genau zu sein, ist es ein browser online game... daher kann ich dir da schlecht einen link posten,
aber falls es dich brennend interessiert wie das ausschaut hast du 2. möglichkeiten:

1. du meldest dich dort auch an (earthlost.de), was du wahrscheinlich nicht tun möchstest (glaube ich halt)

oder 2. du schaust dir den quellcode an, ich habe ihn als anhang beigefügt.
der quellcode stammt aus der site, die du im ersten bild sehen kannst. also eine ansicht von universum...
aber im quellcode nur funktionen, aber keine namen, wie sie angezeigt werden.

desweiteren bin ich drauf gekommen, wenn ich mit

C#-Code:
wb_Earthlost.ShowSaveAsDialog();

die site auf den desktop speicher, und dier erhaltene .mht datei mit dem normalen texteditor öffne, kann ich die namen rauslesen... nur dieser weg ist mir zu umständlich...

es muss ja irgendwie einfacher gehen...


Dateianhang:
unknown main.txt (6,41 KB, 943 mal heruntergeladen)
17.06.2010 00:37 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
blutiger_anfänger blutiger_anfänger ist männlich
myCSharp.de-Mitglied

avatar-178.gif


Dabei seit: 26.04.2008
Beiträge: 293
Entwicklungsumgebung: VS 2013
Herkunft: Meerbusch, NRW


blutiger_anfänger ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Ok - so wie das ausschaut, werden die Texte per Javascript nachgeladen. Aber wenn es dir im Webbrowser Element richtig angeziegt wird, dann kannst du auch den gerenderten Quellcode auslesen.
Wie und wann genau holst du denn den Quelltext?

wb_Earthlost.DocumentText oder wb_Earthlost.Document.Body.InnerHtml oder wb_Earthlost.Document.Body.InnerText oder wie greifst du darauf zu?
17.06.2010 00:48 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Patboy Patboy ist männlich
myCSharp.de-Mitglied

Dabei seit: 16.06.2010
Beiträge: 7

Themenstarter Thema begonnen von Patboy

Patboy ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

also ich navigier per hand zur der seite wie man in bild sieht.
dann warte ich bis seite fertig geladen ist, dann habe ich einen button mit dem ich
den quellcode auslesen:

C#-Code:
        private void btn_Start_Click(object sender, EventArgs e)
        {
            GanzeURL = wb_Earthlost.Url.AbsoluteUri;
            SplitURL = GanzeURL.Split('?');
            sidURL = SplitURL[1];
            MainURL = SplitURL[0];
            Split2URL = MainURL.Split('/');
            EngineURL = Split2URL[0] + '/' + '/' + Split2URL[2] + '/';
            WeiterURL = EngineURL + "galaxy.phtml?" + sidURL;
            // universe=" + universe + "&galaxy=" + galaxy + "&system=" + system + "&"
            //wb_Earthlost.ShowSaveAsDialog();
            quelle = wb_Earthlost.DocumentText;
            File.WriteAllText(@"D:\main.txt",quelle);
        }

aber wie gesagt, da sind keine namen drin, wie man in der txt datei von vorhin sieht
das mache ich in den letzten beiden befehlen

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Patboy am 17.06.2010 01:06.

17.06.2010 01:05 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
blutiger_anfänger blutiger_anfänger ist männlich
myCSharp.de-Mitglied

avatar-178.gif


Dabei seit: 26.04.2008
Beiträge: 293
Entwicklungsumgebung: VS 2013
Herkunft: Meerbusch, NRW


blutiger_anfänger ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Ok, wenn ich das richtig sehe, dann sind deine Namen, etc. in nem Iframe. Um an den Quelltext im Iframe zu kommen musst du alle HTMLElemente in deinem WebbrowserControl durchegen und nach dem passenden Iframe-Element suchen. (Zum Beispiel Abgleich über das "name"-Attribut).
Wenn du das Element gefunden hast, dann kannst du über die Eigenschaft Element.Body.InnerHTML deine "Namen" auslesen.

viele Grüße
17.06.2010 01:30 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Patboy Patboy ist männlich
myCSharp.de-Mitglied

Dabei seit: 16.06.2010
Beiträge: 7

Themenstarter Thema begonnen von Patboy

Patboy ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

danke erstmal für deine schnelle hilfe um diese uhrzeit.

habe versucht deinen vorschalg in die tat umzusetzen, hat aber irgendwie nicht ganz
geklappt. habe folgenden code geschrieben:

C#-Code:
        private void btn_Start_Click(object sender, EventArgs e)
        {
            GanzeURL = wb_Earthlost.Url.AbsoluteUri;
            SplitURL = GanzeURL.Split('?');
            sidURL = SplitURL[1];
            MainURL = SplitURL[0];
            Split2URL = MainURL.Split('/');
            EngineURL = Split2URL[0] + '/' + '/' + Split2URL[2] + '/';
            WeiterURL = EngineURL + "galaxy.phtml?" + sidURL;
            // universe=" + universe + "&galaxy=" + galaxy + "&system=" + system + "&"
            //wb_Earthlost.ShowSaveAsDialog();
            quelle = wb_Earthlost.DocumentText;

            int iframe = wb_Earthlost.Document.Window.Frames.Count;

            for (int i=0; i < iframe; i++)
            {
                HtmlWindow frame = wb_Earthlost.Document.Window.Frames[i];
                string frameHtml = frame.Document.Body.InnerHtml + frame.Document.Body.InnerText +
                                    frame.Document.Body.OuterHtml + frame.Document.Body.OuterText;
                File.WriteAllText(@"D:\main" + i + ".txt", frameHtml);
            }

es sind nur 2 frames die er zählt.

da kommt dann aber immer noch nicht der gesuchte text vor. Im anhang siehst du wieder die txt die mir ausgespcukt wurde. habe die ergebnisse von main0 und main1 zusammen gefügt.

werde jetzt dann auch mal schalfen gehen, melde mich spätestens morgen nachmittag wieder.

mfg Patrick


Dateianhang:
unknown main1.txt (965 Byte, 83 mal heruntergeladen)

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Patboy am 17.06.2010 02:24.

17.06.2010 02:23 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
MarsStein MarsStein ist männlich
myCSharp.de-Poweruser/ Experte

avatar-3191.gif


Dabei seit: 27.06.2006
Beiträge: 3.121
Entwicklungsumgebung: VS 2013, MonoDevelop
Herkunft: Trier -> München


MarsStein ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo,

Dein zuletzt gepostetes Dokument ist ja wieder ein Frameset.
Um an Deinen Text zu kommen, musst Du also noch weiter in die Framestruktur runterklettern. Ich vermute den gesuchten Text in der ally.phtml

Gruß, MarsStein
17.06.2010 09:52 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Patboy Patboy ist männlich
myCSharp.de-Mitglied

Dabei seit: 16.06.2010
Beiträge: 7

Themenstarter Thema begonnen von Patboy

Patboy ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Danke für die info. Aber wie kann ich noch weiter in der framestruktur runterklettern?? Kenn mich auf dem gebiet webbrowser nicht so gut aus, und im c# codebook ist auch nichts brauchbares dabei.

mfg Patrick
17.06.2010 13:07 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
MarsStein MarsStein ist männlich
myCSharp.de-Poweruser/ Experte

avatar-3191.gif


Dabei seit: 27.06.2006
Beiträge: 3.121
Entwicklungsumgebung: VS 2013, MonoDevelop
Herkunft: Trier -> München


MarsStein ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo,

das machst Du genauso wie mit dem IFRAME.

frame.Document hat auch wieder ein Window, und dieses hat (im Falle eines Framesets oder vorhandener Iframes) wieder eine Frames-Collection, usw...

Gruß, MarsStein
17.06.2010 13:23 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
h0scHberT
myCSharp.de-Mitglied

Dabei seit: 23.05.2008
Beiträge: 89


h0scHberT ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

such mal nach Watin, das könnte dir es vielleicht etwas erleichtern
17.06.2010 13:42 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Patboy Patboy ist männlich
myCSharp.de-Mitglied

Dabei seit: 16.06.2010
Beiträge: 7

Themenstarter Thema begonnen von Patboy

Patboy ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Vielen Dank MarsStein habe nun endlich einen string, mit dem ich was anfangen kann

hier der code:

C#-Code:
                HtmlWindow frame = wb_Earthlost.Document.Window.Frames[1];
                frame = frame.Document.Window.Frames[1];
                string frameHtml = frame.Document.Body.OuterText + frame.Document.Body.OuterHtml;
                File.WriteAllText(@"D:\main.txt", frameHtml);

jetzt gehts dann mal weiter mit der programmierung...

Vielen Dank nochmal.

Mfg Patrick
17.06.2010 15:25 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als 9 Jahre.
Der letzte Beitrag ist älter als 9 Jahre.
Antwort erstellen


© Copyright 2003-2019 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 22.09.2019 06:56