Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Einlesen unterscheidlicher Webseitenformate is C# Sharp
gunjag
myCSharp.de - Member



Dabei seit:
Beiträge: 17
Herkunft: zur Zeit Berlin

Themenstarter:

Einlesen unterscheidlicher Webseitenformate is C# Sharp

beantworten | zitieren | melden

Hallo liebe Forumsgemeinde.
Ich bin nach dem Studium 2er Grundlagenbücher dabei mein erstes Projekt in C# zu realisieren und muss sagen, ich stehe doch leider wie der berühmte Ochs vorm Berg.

Ich scheiter an dem auslesen, bzw. parsen von Webseiten.
Konkret. Ich bin dabei einen Bot für unterscheidliche Wettanbieter zu entwickeln.
Dabei muss ich beispielsweise pages wie bwin oder auch betfair auslesen. Und an dieser Stelle tritt das Problem auf, dass es keine normalen HTML Pages sind und beispielsweise die Quoten etc. nicht ausgelesen werden können.
Hat jemand von euch einen Tipp, wie ich am besten an die Sache herangehe bzw. wo ich gute INfos zu dem Thema bekommen kann.
Danke und viele Grüße
gunjag
private Nachricht | Beiträge des Benutzers
Peter Bucher
myCSharp.de - Experte

Avatar #jVxXe7MDBPAimxdX3em3.jpg


Dabei seit:
Beiträge: 6141
Herkunft: Zentralschweiz

beantworten | zitieren | melden

Hallo gunjag
Zitat
Original von gunjag
Ich scheiter an dem auslesen, bzw. parsen von Webseiten.
Wo genau scheiterst du?
Zitat
Original von gunjag
Und an dieser Stelle tritt das Problem auf, dass es keine normalen HTML Pages sind und beispielsweise die Quoten etc. nicht ausgelesen werden können.
Sondern?


Gruss Peter
--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011

- https://peterbucher.ch/ - Meine persönliche Seite
- https://fpvspots.net/ - Spots für FPV Dronenflüge
private Nachricht | Beiträge des Benutzers
[email protected]
myCSharp.de - Member



Dabei seit:
Beiträge: 407

beantworten | zitieren | melden

Hi!

Möglicherweise liegt es daran, daß die Anbieter vielleicht gar nicht
möchten, daß irgendjemand die Wetten oder Quoten ausliest.

Ich vermute, daß die Tabellen per Ajax oder ähnl. nachgeladen werden
und somit ein auslesen schwierig wird.

Frag doch mal bei den Anbietern nach ob es eine Möglichkeit für
3rd Party - Entwickler gibt legal an die Daten zu kommen.

lg
private Nachricht | Beiträge des Benutzers
VuuRWerK
myCSharp.de - Member

Avatar #avatar-2424.gif


Dabei seit:
Beiträge: 183
Herkunft: Dresden

beantworten | zitieren | melden

In vielen Fällen bieten die Anbieter dann Ihre Daten in Form von WebServices an, somit kannst Du sie dann ohne großer Arbeit auf einer eigenen Seite einbinden. ABER viele Anbieter wollen auch einen kleinen "obolus" dafür haben!

Gut Schuß
VuuRWerK
private Nachricht | Beiträge des Benutzers
gunjag
myCSharp.de - Member



Dabei seit:
Beiträge: 17
Herkunft: zur Zeit Berlin

Themenstarter:

beantworten | zitieren | melden

Hallo zusammen.
Danke für eure Antworten.
Ich habe auch schonmal dran gedacht, dass es verhindert werden soll an die Daten zu kommen.
Aber andererseits gibt es bereits einige, auch private Bots, die auf die Webseiten zugreifen und exact die Quoten etc auslesen.
Zumindestens beim Anbieter Betfair kenne ich mehrere.

Ajax sagt mir leider gar nichts, muss ich mich mal schlau machen.

@Peter: Ich weiß nicht genau welche Datei bzw. Webformate das sind.
Vielleicht schaust du einfach einmal auf www.betfair.com -->sports und dann ein beliebiges ereignis.

Thx für Anregungen
gunjag
private Nachricht | Beiträge des Benutzers
Peter Bucher
myCSharp.de - Experte

Avatar #jVxXe7MDBPAimxdX3em3.jpg


Dabei seit:
Beiträge: 6141
Herkunft: Zentralschweiz

beantworten | zitieren | melden

Hallo gunjag

Das wird mit AJAX nachgeladen.
Da wirds relativ schwierig bis unmöglich, das auszulesen.


Gruss Peter
--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011

- https://peterbucher.ch/ - Meine persönliche Seite
- https://fpvspots.net/ - Spots für FPV Dronenflüge
private Nachricht | Beiträge des Benutzers
gunjag
myCSharp.de - Member



Dabei seit:
Beiträge: 17
Herkunft: zur Zeit Berlin

Themenstarter:

beantworten | zitieren | melden

Das ist natürlich ein Traum X(
Schwierig bis unmöglich heißt: unmöglich oder schwierig?
Weil wie gesgat, es gibt definitiv bots, die das auslesen und das auch in Echtzeit.
Oder arbeiten die dann mit dem Anbieter zusammen und bekommen die Daten auf einem anderen Weg übermittelt
Gruß
Tim
private Nachricht | Beiträge des Benutzers
Peter Bucher
myCSharp.de - Experte

Avatar #jVxXe7MDBPAimxdX3em3.jpg


Dabei seit:
Beiträge: 6141
Herkunft: Zentralschweiz

beantworten | zitieren | melden

Hallo Tim

Ich würde sagen, dass das nicht über ein Host möglich ist.
D.h. weil das alles ins DOM geladen wird, bräuchtest du einen Browser bei dem du das DOM auslesen könntest.
Das ist jetzt mein Gedanke auf die Schnelle.

Ich denke die anderen lösen das über einen Webservice oä.
Alles andere wäre zu umständlich, schwierig und langsam.


Gruss Peter
--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011

- https://peterbucher.ch/ - Meine persönliche Seite
- https://fpvspots.net/ - Spots für FPV Dronenflüge
private Nachricht | Beiträge des Benutzers
gunjag
myCSharp.de - Member



Dabei seit:
Beiträge: 17
Herkunft: zur Zeit Berlin

Themenstarter:

beantworten | zitieren | melden

Tja und ienen Webservice müsste ich dann wahrscheinlich bei dem Anbieter "beantragen", was der sicherlich nicht so gerne hat.
Tja, scheiße gelaufen.
Meinst du es gäbe eine chance irgendwie einen bestehenden Bot zu nutzen und diesen "Auszulesen", d.h. den im Hintergrund mitlaufen zu lassen und im Grunde die Daten irgendwo abzweigen und dann weiterverarbeiten?

Gruß
Tim

PS: Wird bwin auch mit AJAX nachgeladen?
private Nachricht | Beiträge des Benutzers
Peter Bucher
myCSharp.de - Experte

Avatar #jVxXe7MDBPAimxdX3em3.jpg


Dabei seit:
Beiträge: 6141
Herkunft: Zentralschweiz

beantworten | zitieren | melden

Hallo gunjag

Nunja, wenn der Anbieter ein Webservice anbietet, wird er es sicherlich (evt. mit entsprechenden Konditionen) gerne haben, wenn dieser auch benutzt wird ;-)

Welches bwin meinst du? bwin.de?
Wenn ja, welchen Teil davon?
Wenn du mir ein Link eines Artikels schicken kannst, geht auch das auslesen :-)


Gruss Peter
--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011

- https://peterbucher.ch/ - Meine persönliche Seite
- https://fpvspots.net/ - Spots für FPV Dronenflüge
private Nachricht | Beiträge des Benutzers
gunjag
myCSharp.de - Member



Dabei seit:
Beiträge: 17
Herkunft: zur Zeit Berlin

Themenstarter:

beantworten | zitieren | melden

Hey
So langsam fange ich an ein paar Sachen zu raffen, aber langsam.

Hier ist eine Page die ich gerne auslesen würde
https://www.bwin.de/livebets.aspx?eventID=1066395
private Nachricht | Beiträge des Benutzers
Peter Bucher
myCSharp.de - Experte

Avatar #jVxXe7MDBPAimxdX3em3.jpg


Dabei seit:
Beiträge: 6141
Herkunft: Zentralschweiz

beantworten | zitieren | melden

Hallo gunjag

Okay, das ist wiederum Flash.
Das geht AFAIK _gar nicht_ bzw. nur mit riesen grossen Umwegen, also besser vergessen.

Ich würde den anderen Weg gehen und um Kooperation mit den anderen Webseiten anfragen.
Webservices sind dann eine kleine[tm] Runde bequemer ;-)


Gruss Peter
--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011

- https://peterbucher.ch/ - Meine persönliche Seite
- https://fpvspots.net/ - Spots für FPV Dronenflüge
private Nachricht | Beiträge des Benutzers
gunjag
myCSharp.de - Member



Dabei seit:
Beiträge: 17
Herkunft: zur Zeit Berlin

Themenstarter:

beantworten | zitieren | melden

Lol
Du verstehst es echt einem Mut zu machen
Jetzt habe ich nämlich gerade rausgefunden, dass Betfair einen Webservice anbietet, aber bwin nicht. Und nun das :-)
Also nur nochmal um sicher zu gehen.
Die in Flash dargestellten quoten auszulesen sollte ich lieber schnell vergessen??
private Nachricht | Beiträge des Benutzers
Peter Bucher
myCSharp.de - Experte

Avatar #jVxXe7MDBPAimxdX3em3.jpg


Dabei seit:
Beiträge: 6141
Herkunft: Zentralschweiz

beantworten | zitieren | melden

Hallo gunjag
Zitat
Original von gunjag
Lol
Du verstehst es echt einem Mut zu machen
Okay, sorry.
Natürlich ist es relativ einfach möglich, probiers einfach *g*.

Nein, Schwerz beiseite ;-)
Zitat
Original von gunjag
Also nur nochmal um sicher zu gehen.
Die in Flash dargestellten quoten auszulesen sollte ich lieber schnell vergessen??
Ich habe das noch nie probiert, kann aber dank meinen bisherigen Erfahrungen und des Verständnisses folgende Schlüsse ziehen:

1. Bei einem externen Request auf eine Webseite bekommt man den Html Quellcode zurück, nicht mehr und nicht weniger.
2. Im Html Quellcode steht dann die Einbindung des Flash Filmes, also bspw. <object ...... .</object>
3. Daraus könntest du den Dateinamen des Flash Filmes extrahieren, soweit kein Problem
4. Mit dem Dateienamen des Flash Filmes kannst du diesen downloaden.
5. Musst du jetzt bei dir _irgendwie_ Informationen aus dem Flash Film herausziehen

5.1 Das wird höchstwahrscheinlich aber nicht gehen, da du eine ander Umgebung stehen hast, als dies Live der Fall ist

Die Konklusion: Ich versuche nicht dich zu entmutigen, sondern eher dich vor unnützen Anstrengungen zu bewahren.


Gruss Peter
--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011

- https://peterbucher.ch/ - Meine persönliche Seite
- https://fpvspots.net/ - Spots für FPV Dronenflüge
private Nachricht | Beiträge des Benutzers
gunjag
myCSharp.de - Member



Dabei seit:
Beiträge: 17
Herkunft: zur Zeit Berlin

Themenstarter:

beantworten | zitieren | melden

Hey Peter.
Das habe ich auch so verstanden, schon klar dass Du mich nicht entmutigen willst.
Ich habe aber nun entgegen deiner Aussage jetzt doch eine Möglichkeit gefunden an die Frames bzw. an die Flash Infos zu kommen und zwar über das http Sniffing.
Damit fange ich die genauen html Links ab und kann die dann mittels eines einfachen Web Request auslesen.
Hier der Code dazu:

using System;
using System.IO;
using System.Net;
using System.Text;



class WebFetch
{
static void Main(string[] args)
{
// ganzen Input bereitstellen
StringBuilder sb = new StringBuilder();

// erzeugt Array
byte[] buf = new byte[8192];

// Eingabe der Page die augelesen werden soll

HttpWebRequest request = (HttpWebRequest)
WebRequest.Create("http://live.bwin.de/V2GetEventData.aspx?eid=1077020&cts=633300441455888374&lang=2&mbo=0&cs=75A900F4&n=1&r=1194447365594");




HttpWebResponse response = (HttpWebResponse)
request.GetResponse();


Stream resStream = response.GetResponseStream();

string tempString = null;
int count = 0;

do
{
// daten in den Buffer einlesen
count = resStream.Read(buf, 0, buf.Length);

// sicher gehen, dass Daten vorhanden sind
if (count != 0)
{
// in ASCII
tempString = Encoding.ASCII.GetString(buf, 0, count);

// string aufbauen
sb.Append(tempString);
}
}
while (count > 0); // noch weitere Daten?

// Ausgabe
Console.WriteLine(sb.ToString());
Console.Read();

}
}

Das ist jetzt ein Beispiel von vorhin, also es kann sein, dass der jetzt unter diesem Frame nichts mehr ausspuckt

Nun aber habe ich doch noch eine Frage.
Das habe ich ja jetzt als eine Klasse festgelegt und die Ausgabe erfolgt über eine Konsole.
Ich würde das ganze aber gerne in eine GUI einbinden, in der ich beispielsweise die gewünschte URL eingeben kann, die wird dann dem o.a. Code übergeben und anschließend kann ich das ganze dann per Regex auswerten.
Also, meine eigentliche Frage. Wo muss der gepostete Code hin, dass ich ihn in eine GUI einbinden kann.
Ich hoffe ich ahbe nciht alle vollständig verwirrt.

Ein sich durch Foren wühlender

Tim 8)
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von gunjag am .
private Nachricht | Beiträge des Benutzers
Peter Bucher
myCSharp.de - Experte

Avatar #jVxXe7MDBPAimxdX3em3.jpg


Dabei seit:
Beiträge: 6141
Herkunft: Zentralschweiz

beantworten | zitieren | melden

Hallo Tim

Nett was du rausgefunden hast :-)
Hmm du brauchst eigentlich nur Windows Forms Grundlagen.
Dann kannst du diesen Code ganz einfach einbinden.


Gruss Peter
--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011

- https://peterbucher.ch/ - Meine persönliche Seite
- https://fpvspots.net/ - Spots für FPV Dronenflüge
private Nachricht | Beiträge des Benutzers
gunjag
myCSharp.de - Member



Dabei seit:
Beiträge: 17
Herkunft: zur Zeit Berlin

Themenstarter:

beantworten | zitieren | melden

So, jetzt bin ich ein gutes Stück weiter gekommen und schon zum Teil dabei, meinen doch etwas chaotischen Quelltext mal ein bisschen zu pimpen und ordnen.
Dabei folgendes Problem.
Ich habe nun viele einzelne Funktionen "private xxxx()", in denen alle möglichen Codes stehen.
Noch mache ich es so, dass ich diese Funktionen über die Ausgabefelder miteinander verknüpfe. Soll heißen, wenn ich einen string erzeugt habe, dann gebe ich ihn in einem Textfeld aus, welches ich dann anschließend in der nächsten Funktion wieder auslese um den String beispielsweise zu durchsuchen.
Das ist ziemlich unelegant, das ist mir auch klar.
Aber ich will, bzw. kann nicht alles in eine Funktion packen.
Jetzt meine Frage: Wie kann ich beispielsweise in einer Funktion einen String erzeugen, auf den ich aus der nächstebn Funktion dann wieder zugreifen kann. Es muss irgendwie mit public gehen, aber ich kriege es einfach nciht hin :-)
LG
Tim
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von gunjag am .
private Nachricht | Beiträge des Benutzers
Peter Bucher
myCSharp.de - Experte

Avatar #jVxXe7MDBPAimxdX3em3.jpg


Dabei seit:
Beiträge: 6141
Herkunft: Zentralschweiz

beantworten | zitieren | melden

Hallo Tim

Entweder übergibtst du die Werte immer oder hältst sie innerhalb der eigentlichen Klasse verfügbar.


Gruss Peter
--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011

- https://peterbucher.ch/ - Meine persönliche Seite
- https://fpvspots.net/ - Spots für FPV Dronenflüge
private Nachricht | Beiträge des Benutzers
gunjag
myCSharp.de - Member



Dabei seit:
Beiträge: 17
Herkunft: zur Zeit Berlin

Themenstarter:

beantworten | zitieren | melden

erledigt...
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von gunjag am .
private Nachricht | Beiträge des Benutzers