Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Lottozahlen von lotto.de abrufen (https://www.delphipraxis.net/178198-lottozahlen-von-lotto-de-abrufen.html)

Gutelo 23. Dez 2013 01:03

Lottozahlen von lotto.de abrufen
 
Hallo,

ich moechte die aktuellen Lottozahlen von der Webpage www.lotto.de auslesen. Fur C++ Builder habe ich folgenden Code in einem anderen C++ Forum gefunden:

Code:
  WebClient wc = new WebClient();
  textBox1.Text = wc.DownloadString(@"http://www.lotto.de");
  string regex = "<div id=\"hp649gwzLeft\">.*?<div class=\"lottonumbers\">(?:\\s+<span>([\\d]{1,2})</span>){6}";
  RegexOptions options = RegexOptions.Singleline | RegexOptions.IgnoreCase;

  Regex reg = new Regex(regex, options);
  var m = reg.Match(textBox1.Text);

  var numbers = m.Groups[1].Captures;
  foreach (var n in numbers) MessageBox.Show(n.ToString());
Diesen Code hab ich folgendermassen in Delphi umgesetzt bis auf die letzten zwei Zeilen:

Code:
var RegEx : TRegEx;
    RegExStr : String;
    Match : TMatch;

Memo1.text := IdHttp1.Get('http://www.lotto.de/de/spielschein.html');
RegExStr := "<div id=\"hp649gwzLeft\">.*?<div class=\"lottonumbers\">(?:\\s+<span>([\\d]{1,2})</span>){6}";
RegEx := TRegEx.Create(RegExStr,[roSingleLine,roIgnoreCase]);
Match := RegEx.Match(RegExStr);
Bei den letzten beiden Zeilen im C++ Code habe ich das Problem dass es keine Property Match.Groups[1].Capture bei der Delphi Klasse gibt. Bisher wird der Quellcode der html Seite erfolgreich geladen und das matching klappt wie ich mit einfacheren Suchstrings (z.B. RegExStr := 'Lotto') ausprobiert habe. Allerdings muss RegExStr noch getuned werden, da sich das Layout bei Lotto.de geaendert hat und der Suchstring damit nicht mehr stimmt.

Hat jemand eine Idee wie ich die zwei letzten Zeilen im C Code in Delphi umsetze? Fuer Tipps wie RegExStr fuer die aktuelle Webpage aussehen muesste waere ich auch dankbar.

Der Aktuelle Quellcode fuer die Zahlen lautet:

<div class="winning_numbers boxRow clearfix"> <h3><img src="/images/fp-c334fbe9-logo_lotto_small.gif" width="109" height="16"/></h3> <ul class="clearfix" data-bind="with: lotto6aus49()"> <li data-bind="text: zahl(1)"></li> <li data-bind="text: zahl(2)"></li> <li data-bind="text: zahl(3)"></li> <li data-bind="text: zahl(4)"></li> <li data-bind="text: zahl(5)"></li> <li data-bind="text: zahl(6)"></li> <li data-bind="html: zusatzzahl(), visible: zusatzzahl() != null" class="last"></li> <li data-bind="html: superzahl(), visible: superzahl() != null" class="last"></li> </ul> </div>

Ich hab keine Ahnung wie man daraus die Zahlen erhalten soll. Das sieht eher aus wie Variablen die von einem Skript gefuellt werden.

Frohe Weihnachten

Gutelo

Popov 23. Dez 2013 07:08

AW: Lottozahlen von lotto.de abrufen
 
Also für den Fall, dass ich deine Frage falsch verstanden habe, diese Antwort ignorieren (ist einfach noch zu früh am Morgen).

Wenn es drum geht die Zahlen aus dem Html-Code Salat zu holen, das ist machbar.

Mit Pos sucht man die Position von "text: zahl("
Mit Delete löscht man alles bist zu dem Text (Inklusive)

Mit Pos sucht man die Position von ")"
Mit Copy kopiert man alles bis zu der Position. Ergebnis ist eine Zahl (Zahl befindet sich ja zwischen "text: zahl(" und ")").

Das alles in einer Schleife durchlaufen lassen bis alles durch ist.

Fertig.

Gutelo 23. Dez 2013 07:20

AW: Lottozahlen von lotto.de abrufen
 
Hallo Popov,

es waere schoen wenn das die gesuchten Zahlen waeren :) Aber 1,2,3,4,5,6 waren es nicht am letzten Ziehungstag. zahl(N) ist glaub ich eine Funktion die den Parameter N= 1, 2, 3, ... bekommt fuer erste, zweite, dritte,... Zahl der Ziehung. Die Funktion liefert dann den Wert zurueck. Das wird sozusagen vom Browser erledigt.

Es gibt ja fuer jedes Bundesland eine Lotto-Seite. Bei lotto-sachsen stehen die Ziehungszahlen schoen im klartext im html ohne dieses bescheuerte JavaScript.

Ich muss mich nur noch in die RegEx Ausdruecke reinpfrimeln.

Gutelo

Popov 23. Dez 2013 07:33

AW: Lottozahlen von lotto.de abrufen
 
Ok, wie gesagt, ist noch zu früh.

Also wenn das so nicht geht, dann entweder die Funktionen selbst auswerten oder den Browsertext filtern.

Gutelo 23. Dez 2013 07:39

AW: Lottozahlen von lotto.de abrufen
 
Auch wenn es anders geht, wuerde ich doch gerne wissen wie man das generell machen kann wenn Javascript verwendet wird.

Neutral General 23. Dez 2013 08:11

AW: Lottozahlen von lotto.de abrufen
 
Ich hatte mir die Lottozahlen damals von einer anderen Seite runtergeladen.
Ohne nachzugucken kann ich dir auswendig aber nicht mehr sagen wo das war...

Perlsau 23. Dez 2013 09:43

AW: Lottozahlen von lotto.de abrufen
 
Liste der Anhänge anzeigen (Anzahl: 2)
Als ich letztes Jahr meine Lottoanwendung zusammengestrickt hatte, nahm ich mir viel Zeit, um die besten Aktualisierungsseiten herauszufinden und die Orte, wo man das Ganze auch ohne HTML-Parserei runterladen kann.

Fazit: Es gibt zwar CSV- und Excel-Archive zum Runterladen, aber die werden wohl nicht immer zeitnah gepflegt. Ich hab mich dann nach vielem Herumprobieren für diese Seite entschieden: Da ist alles drin, was ich brauche, auch die Gewinnquoten und die Anzahl der Gewinner usw.

Gutelo 23. Dez 2013 11:20

AW: Lottozahlen von lotto.de abrufen
 
Danke Perlsau,

ich hab jetzt eine erste Rumpfimplementation. Fuer diejenigen die es interessiert hier das Grundgeruest:

Code:
procedure TMainForm.Button2Click(Sender: TObject);
var sl: TStringList;   // Store Webpage Source Code
    RegExStr : String; // Search Expression
    RegEx : TRegEx;    // Expression Evaluation Class
    MatchCollection : TMatchCollection; //Store all Determined Matches
    i: Integer;
    LottoNumbers : String;
begin
  // Read Lotto Webpage
  sl:=TStringList.Create;
  sl.Text := IdHttp1.Get('http://www.sachsenlotto.de/mskp/user/lottoresults/lottoresultsshow.do?ziehungsDatum=18.12.2013#');
  // Get numbers 1 to 6 and store them in MatchCollection
  RegExStr := '<span class="lottonumberbig">(\d*)</span>';
  RegEx := TRegEx.Create(RegExStr,[roSingleLine,roIgnoreCase]);
  MatchCollection := RegEx.Matches(sl.text);
  // if six numbers found then plot results
  if MatchCollection.Count = 6 then
  begin
    LottoNumbers := 'Zahlen: ';
    for i := 1 to 6 do
    begin
      LottoNumbers := LottoNumbers + MatchCollection.Item[i-1].Groups[1].Value + ', ';
    end;
    Showmessage(LottoNumbers);
  end
  else
    begin
    Showmessage('Error: No Lotto numbers found!');
    end;

  // Get Superzahl and store it in MatchCollection
  RegExStr := '<span class="extralottonumberbig">(\d*)</span>';
  RegEx := TRegEx.Create(RegExStr,[roSingleLine,roIgnoreCase]);
  MatchCollection := RegEx.Matches(sl.text);
  // if one number found then plot Superzahl
  if MatchCollection.Count = 1 then
  begin
    Showmessage('Superzahl: ' + MatchCollection.Item[0].Groups[1].Value);
  end;
end;
Das Datum in der URL kann gegen jedes beliebiges Datum von vergangenen Ziehungen ausgetauscht werden und man erhaelt so alle Zahlen von 1955 bis heute.

Viel Spass damit

Gutelo

vagtler 23. Dez 2013 11:58

AW: Lottozahlen von lotto.de abrufen
 
Ich will ja kein Spielverderber sein, aber hat sich mal jemand bei den Anbietern erkundigt, ob solch eine Vorgehensweise rechtens ist?

Ich zitiere hier mal exemplarisch aus den Nutzerhinweisen von www.sachsenlotto.de:
Zitat:

Urheber- und Markenrechte
Die Inhalte (Bilder oder Texte) und/oder die graphische Gestaltung dieser Website sind urheber- bzw. markenrechtlich geschützt. Kein Teil der graphischen Gestaltung dieser Website darf ohne schriftliche Zustimmung der Sächsischen LOTTO-GmbH in irgendeiner Form weiterverwendet werden. Gleiches gilt für die Inhalte, soweit diese nicht ausdrücklich für die öffentliche Information und Berichterstattung und deren Weiterverbreitung vorgesehen sind bzw. wenn deren Nutzung über die urheberrechtlich zulässige und erlaubte Verwendung hinausgeht.
Ich möchte zwar den Teufel nicht an die Wand malen und wo kein Kläger da kein Richter, aber dennoch halte ich die Veröffentlichung von Quelltext zum Screen bzw. Web Scraping zumindest für nicht unkritisch - auch nicht für den hiesigen Forenbetreiber.

Daniel 23. Dez 2013 12:36

AW: Lottozahlen von lotto.de abrufen
 
Das Hinweis ist völlig richtig und natürlich wird sich jeder Entwickler mit der Frage befassen müssen, ob er die gewünschten Inhalte überhaupt nutzen darf. Sofern es sich um die reinen Lotto-Zahlen handelt, mag es sein, dass deren Verwendung durch "öffentliche Information und Berichterstattung" abgedeckt ist, aber selbst das sollte man sich kurz bestätigen lassen.

Perlsau 23. Dez 2013 12:37

AW: Lottozahlen von lotto.de abrufen
 
Meiner Ansicht stellt privates Speichern der Daten eine "urheberrechtlich zulässige und erlaubte Verwendung" dar: Keine kommerzielle Verwendung, kein Schaden für die Lottogesellschaft. Ob ich die Daten jetzt zweimal die Woche abtippe, um sie in der DB zu archivieren, oder automatisch eintragen lasse, dürfte keine Rolle spielen.

Zitat:

Zitat von vagtler (Beitrag 1240845)
Ich will ja kein Spielverderber sein, aber hat sich mal jemand bei den Anbietern erkundigt, ob solch eine Vorgehensweise rechtens ist?

Du verdirbst aber hier ganz klar das Spiel, und du weißt das auch, weswegen du auch diesen Halbsatz voranstellen mußt. Dasselbe unten:

Zitat:

Zitat von vagtler (Beitrag 1240845)
Ich möchte zwar den Teufel nicht an die Wand malen und wo kein Kläger da kein Richter, aber dennoch halte ich die Veröffentlichung von Quelltext zum Screen bzw. Web Scraping zumindest für nicht unkritisch - auch nicht für den hiesigen Forenbetreiber.

Du malst hier jedoch ganz entgegen deiner Beteuerung den Teufel an die Wand und rufst laut nach dem Forenbetreiber. Vielleicht solltest du dich mal als Abmahn-Anwalt bewerben, die suchen immer solche Leute ... :evil:

Daniel 23. Dez 2013 12:46

AW: Lottozahlen von lotto.de abrufen
 
Man muss gar nicht weit gucken, bis man "brutalste" Auslegungen von "kommerzielle Verwendung" findet, die nur deswegen greifen können, weil sich der Entwickler vorher entweder gar keine Gedanken gemacht hat oder sich leichtfertig auf die "persönliche Meinung" eines anonymen Foren-Teilnehmers verlassen hat.

Ja, man sollte jedem Entwickler das Spiel gründlich verderben - nämlich das Spiel, jegliche Daten leichtfertig zu verwenden. Erst den Betreiber eines Dienstes kontaktieren bzw. sich Informationen beschaffen, dann dessen Daten nutzen. So und nicht anders muss die Reihenfolge lauten, wenn man abgesichert sein möchte.

Perlsau 23. Dez 2013 12:47

AW: Lottozahlen von lotto.de abrufen
 
Zitat:

Zitat von Daniel (Beitrag 1240847)
Das Hinweis ist völlig richtig und natürlich wird sich jeder Entwickler mit der Frage befassen müssen, ob er die gewünschten Inhalte überhaupt nutzen darf. Sofern es sich um die reinen Lotto-Zahlen handelt, mag es sein, dass deren Verwendung durch "öffentliche Information und Berichterstattung" abgedeckt ist, aber selbst das sollte man sich kurz bestätigen lassen.

Letztes Jahr hatte ich ausgiebigen Mailverkehr mit Internet-Teams diverser Lottogesellschaften. Ich habe dort ausführlich geschildert, was ich mache, nämlich eine Lottozahlenverwaltung programmieren, und gefragt, ob sie mir mit den Inhalten ihrer Lottozahlen-Datenbank behilflich sein können. Als Resultat erhielt ich diverse Links zu Zip- und CSV-Dateien mit nahezu vollständigen Lotto-Daten. Die Mails sind alle noch gespeichert.

Ob ich die Daten jetzt abtippe oder sie automatisiert eintragen lasse, dürfte niemanden außer vielleicht Vagtler interessieren. Ich bearbeite beim Auslesen lediglich ein Dokument, das sich auf meiner Festplatte befindet, nachdem ich ganz legal (wo sollte da auch was illegales sein?) die Seite angewählt habe, wodurch sie in meinem Browser-Cache landet. Also wirklich, man kann's auch übertreiben!

mkinzler 23. Dez 2013 12:51

AW: Lottozahlen von lotto.de abrufen
 
Dann freu Dich. Aber unterlasse die Angriffe auf andere Mitglieder bzw. die Unterstellungen!

Perlsau 23. Dez 2013 12:52

AW: Lottozahlen von lotto.de abrufen
 
Zitat:

Zitat von Daniel (Beitrag 1240849)
Man muss gar nicht weit gucken, bis man "brutalste" Auslegungen von "kommerzielle Verwendung" findet, die nur deswegen greifen können, weil sich der Entwickler vorher entweder gar keine Gedanken gemacht hat oder sich leichtfertig auf die "persönliche Meinung" eines anonymen Foren-Teilnehmers verlassen hat.

Da hätte ich jetzt aber doch gerne ein zwei Beispiele ... wenn man nicht weit schauen muß, hast du die ja sicher sofort parat. Danke.

Zitat:

Zitat von Daniel (Beitrag 1240849)
Ja, man sollte jedem Entwickler das Spiel gründlich verderben - nämlich das Spiel, jegliche Daten leichtfertig zu verwenden. Erst den Betreiber eines Dienstes kontaktieren bzw. sich Informationen beschaffen, dann dessen Daten nutzen. So und nicht anders muss die Reihenfolge lauten, wenn man abgesichert sein möchte.

Es geht nicht um "jegliche Daten", das ist eine klare Übertreibung, mit der du deinen Standpunkt zu untermauern suchst. Es geht lediglich um öffentlich zugängliche Daten. Ich darf sogar auf meiner Homepage die Lottozahlen veröffentlichen, wenn mir danach ist. Ich darf dort auch andere Nachrichten veröffentlichen, z.B. den Dax, oder das Wetter oder die Uhrzeit, ob ich die jetzt von irgend einer Internetseite gelesen habe oder nicht, spielt keine Rolle.

Perlsau 23. Dez 2013 12:53

AW: Lottozahlen von lotto.de abrufen
 
Zitat:

Zitat von mkinzler (Beitrag 1240851)
Dann freu Dich. Aber unterlasse die Angriffe auf andere Mitglieder bzw. die Unterstellungen!

Was für Unterstellungen und Angriffe?

mkinzler 23. Dez 2013 12:59

AW: Lottozahlen von lotto.de abrufen
 
Zitat:

Zitat von Perlsau (Beitrag 1240854)
Zitat:

Zitat von mkinzler (Beitrag 1240851)
Dann freu Dich. Aber unterlasse die Angriffe auf andere Mitglieder bzw. die Unterstellungen!

Was für Unterstellungen und Angriffe?

Es war nur ein kleiner Hinweis, dass man in Teufels Küche kommen kann, wenn man ohne Erlaubnis Daten von fremden Seiten "abgreift"; nd hier ist es ohne Belang, ob diese ( auch andersweitig) öffentlich zugänglich sind. Und du fühlst Dich dadurch dermassen angemacht, dass du ihn prsönlich angreiftst:

Zitat:

Du verdirbst aber hier ganz klar das Spiel, und du weißt das auch, weswegen du auch diesen Halbsatz voranstellen mußt.
Zitat:

Ob ich die Daten jetzt abtippe oder sie automatisiert eintragen lasse, dürfte niemanden außer vielleicht Vagtler interessieren.
Zitat:

Du malst hier jedoch ganz entgegen deiner Beteuerung den Teufel an die Wand und rufst laut nach dem Forenbetreiber. Vielleicht solltest du dich mal als Abmahn-Anwalt bewerben, die suchen immer solche Leute ...
Auch Deinen Seithieb gegenüber Daniel solltest Du Dir nocheinmal überlegen.

Gutelo 23. Dez 2013 13:14

AW: Lottozahlen von lotto.de abrufen
 
Ich mache doch nichts anderes als die Webseite abzurufen. Ist etwa das pure abspeichern von Webseiten auch schon verboten in Deutschland?

Und ich wuesste nicht dass Lottozahlen als 'besondere' Zahlen patentrechtlich geschuetzt sind.

Der AGB Teil bezieht sich mit Recht auf alles moegliche auf der Webpage wie Graphiken etc. aber sicher nicht auf die Zahlen.

Perlsau 23. Dez 2013 13:17

AW: Lottozahlen von lotto.de abrufen
 
Einfach nur kindisch! Und Tschüß ...

Zitat:

Zitat von mkinzler (Beitrag 1240856)
Zitat:

Zitat von Perlsau (Beitrag 1240854)
Zitat:

Zitat von mkinzler (Beitrag 1240851)
Dann freu Dich. Aber unterlasse die Angriffe auf andere Mitglieder bzw. die Unterstellungen!

Was für Unterstellungen und Angriffe?

Es war nur ein kleiner Hinweis, dass man in Teufels Küche kommen kann, wenn man ohne Erlaubnis Daten von fremden Seiten "abgreift"; nd hier ist es ohne Belang, ob diese ( auch andersweitig) öffentlich zugänglich sind. Und du fühlst Dich dadurch dermassen angemacht, dass du ihn prsönlich angreiftst:

Zitat:

Du verdirbst aber hier ganz klar das Spiel, und du weißt das auch, weswegen du auch diesen Halbsatz voranstellen mußt.
Zitat:

Ob ich die Daten jetzt abtippe oder sie automatisiert eintragen lasse, dürfte niemanden außer vielleicht Vagtler interessieren.
Zitat:

Du malst hier jedoch ganz entgegen deiner Beteuerung den Teufel an die Wand und rufst laut nach dem Forenbetreiber. Vielleicht solltest du dich mal als Abmahn-Anwalt bewerben, die suchen immer solche Leute ...
Auch Deinen Seithieb gegenüber Daniel solltest Du Dir nocheinmal überlegen.


Daniel 23. Dez 2013 13:20

AW: Lottozahlen von lotto.de abrufen
 
Gemach - gemach ...

Das erste Beispiel, wie "kommerzielle Nutzung" definiert werden kann, haben wir hier in der DP. Als Besitzer einer akademischen Lizenz darf ich meine Programme hier nicht veröffentlichen - nicht einmal kostenfrei, weil dies als "Eigenwerbung" gewertet wird.

Vom Grundsatz her sind wir doch gar nicht so weit auseinander, im Allgemeinen muss ich fragen, bevor ich etwas verwenden darf. Nicht mehr und nicht weniger wollte ich deutlich machen. Und das ganze Klein-Klein und die Wortklauberei lassen wir besser mal.

mkinzler 23. Dez 2013 13:20

AW: Lottozahlen von lotto.de abrufen
 
Zitat:

Zitat von Gutelo (Beitrag 1240857)
Ich mache doch nichts anderes als die Webseite abzurufen. Ist etwa das pure abspeichern von Webseiten auch schon verboten in Deutschland?

Nein aber u.U. das Extrahieren von Inhalten.
Zitat:

Und ich wuesste nicht dass Lottozahlen als 'besondere' Zahlen patentrechtlich geschuetzt sind.
Der AGB Teil bezieht sich mit Recht auf alles moegliche auf der Webpage wie Graphiken etc. aber sicher nicht auf die Zahlen.
Ich bezweifle auch, dass es in diesem Fall ein Problem darstellt, aber grundsätzlich sollte man solche Fragen klären.
[QUOTE]
Gleiches gilt für die Inhalte, soweit diese nicht ausdrücklich für die öffentliche Information und Berichterstattung und deren Weiterverbreitung vorgesehen sind bzw. wenn deren Nutzung über die urheberrechtlich zulässige und erlaubte Verwendung hinausgeht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:15 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz