Content grabben |
dnue
Feiertags-Poster Threadstarter
Beiträge: 27 |
Hi Zusammen
Wer kann mir helfen ein Script in php zu schreiben, dass mir content von einer fremden Seite liefert. Oder kennt jemand einen guten workshop?
Genauer gesagt gehts um die Auswertung der Lottozahlen.
Die Zahlen sind als gif auf der Seite dargestellt.
Wie kann ich nun die Bilder"einlesen" und z.B. als Zahl auf meiner Seite ausgeben.
Es geht um folgende Seite:http://www.swisslotto.ch/servlets/IslServlet?pageid=1&action=rgisterplayer&lang=2
Danke bin noch PHP Anfänger und für jeden Tipp dankbar.
Dani
|
 Profil
Editieren
Zitieren
|
Philipp Gérard
Foren-Team
Beiträge: 1502 |
die Bilder würde ich nicht einlesen, eher die alt-tags. das Funktioniert mit fopen() und preg_match_all()
---
Arbeit ist das Feuer der Gestaltung. - Marx
|
 Profil
E-Mail
Website
Editieren
Zitieren
|
chip
Foren-Team
Beiträge: 419 |
Also ich glaube, das wird so nicht gehen. Er soll eine GIF-Grafik einlesen und dann versuchen, die Zahl die da steht zu "interpertieren". Nee. Man könnte, falls vorhanden, vielleicht den ALT- bzw. den TITLE-Tag einlesen und dann ausgeben.
Ich konnte auf der Seite übrigens keine GIF-Grafiken mit Zahlen sehen (man muss sich erst registrieren. -> weiteres Problem [vielleicht automatischer Login?] )
// edit
@ Philipp: schade, war grad beim Schreiben, aber zu langsam
// nochmal edit:
OK hat sich erledigt. zahlen sieht man bei Statistik
---
Diese Nachricht wurde geändert von: chip |
 Profil
Website
Editieren
Zitieren
|
dnue
Feiertags-Poster Threadstarter
Beiträge: 27 |
Hi und Danke für die Antwort
versuchs mal mit folgendem Link:
http://www.swisslotto.ch/servlets/IslServlet?pageid=1&action=rgisterplayer&lang=2
sollte direkt das Frame geöffnet werden.
Danke
|
 Profil
Editieren
Zitieren
|
dnue
Feiertags-Poster Threadstarter
Beiträge: 27 |
hab mal versucht mit fopen() und preg_match_all()
aber ich blick nicht durch.
Hat nicht jemand was bereits brauchbares zu Hand, was noch abgeändert werden kann.
Mach diese Arbeit gratis für einen Verein, und leider kenne ich mich nur mit html und sehr wenig mit php aus.
Für eure Hilfe Danke ich jetzt schon.
Dani
|
 Profil
Editieren
Zitieren
|
languitar
Foren-Team
Beiträge: 2795 |
Also, hier erst mal das grundsätzliche Konzept:
1. Du musst in dem ganzen Quellcode Begrenzungen für die, für dich relevanten Zahlen finden.
2. Du musst die Datei einlesen und mit preg_match_all() auswerten.
Das hier ist die für dich relevante Seite: https://www.swisslotto.ch/servlets/IslServlet?pageid=63&lastnumber=true
Naja und die preg_match_all-Anweisung könnte so aussehen:
1: | preg_match_all('#https://www.swisslotto.ch/isl_images/D/kugeln/[0-9]+.gif#', $stringdateiinhalt, $arraymitergebnissen); |
Das $arraymitergebnissen lässt du dann zum testen gerade mit 1:
2:
3: | echo "";
print_r($arraymitergebnissen);
echo " "; |
ausgeben und suchst dir die für dich relevanten Keys raus.
|
 Profil
Editieren
Zitieren
|
Philipp Gérard
Foren-Team
Beiträge: 1502 |
Nein, so nicht. So erhält er alle Zahlen in wirren Kombinationen. Du musst ein Muster finden, den Seitenquelltext danach auslesen und die Webmarken (die Zahlen) mitschneiden um die Reihenfolge usw. nicht zu verändern...aber bis ich mich mit Lotto beschäftige...
---
Arbeit ist das Feuer der Gestaltung. - Marx
|
 Profil
E-Mail
Website
Editieren
Zitieren
|
patrickpaulsen
Otto-Normal-Poster
Beiträge: 62 |
Folgendes mal aus meiner Bibliothek.. ich musste allerdings ganz nach oben auf die Leiter steigen, um die unendliche Geschichte (dieser dicke Welzer) hier jetzt ins Forum zu posten
Also....
Einleitung
Oftmals ist es sehr sinnvoll und nütlich verschiedene Inhalte von fremden Webseiten auslesen zu können.
Die Theorie
Das hier vorgestellte PHP-Skript durchsucht eine Quelle nach einer bestimmten Zeichenfolge. Dadurch ist es möglich, gewisse Teile einer Webseite zu speichern bzw. weiterzuverarbeiten. Das Problem liegt im Großen und Ganzen eher darin, dass die wenigsten Webseiten einfache Möglichkeiten bieten, damit das Auslesen Ihrer Daten recht einfach ist. Am einfachsten würde es bei XML-Dokumenten funktionieren, die in etwa so aussehen (könnten):
Hier die Headline Text des Artikels
Bei dieser Variante könnte man das Skript anweisen, nach " " zu suchen und alles, was bis steht, herauszufiltern. In der Praxis sieht es leider anders aus. Man muss also ein Muster finden, wie die herauszulesenden Daten auf der Webseite gespeichert sind. Solche Muster können bestimmte Schriftarten, -größen oder Textklassen sein, die im HTML-Code definiert werden (denn das ist, was das Skript liest!).
Das wichtigste an der Sache ist, dass die Zeichenkombination möglichst einzigartig auf der Webseite ist - wenn nicht, werden auch Informationen ausgelesen, die nicht relevant sind (z.B. wenn man nach und suchen lässt, erhält man alle Zeichen, die als "Fett" markiert sind). Anzumerken ist, dass natürlich auch nach regulären Wörtern wie "Linie" (siehe Beispiel) gesucht werden kann.
Die Praxis
Ich habe mit dieser Materie beschäftigt, da ich die Kontrollen der hiesigen U-Bahnen von deren Webseite auslesen und mir entsprechend zuschicken wollte. Die Informationen sind/waren unter http://www.vormagazin.at/html/heute.php?item=fahrschein verfügbar.
Wenn man sich den HTML-Code ansieht, bemerkt man schnell, dass allen Einträgen wie "Linie XY" mit " " beginnen. Das ist genau der Punkt, den ich oben erwähnt habe - man muss ein Muster finden, woraus das Skript die relevanten Daten auslesen kann. Ich bin dankbar, dass diese Text-Klasse nur bei den Linien verwendet wird - das macht die ganze Sache enorm einfach.
Der Code
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41: | // URL, die durchsucht werden soll
$url = "http://www.vormagazin.at/html/heute.php?item=fahrschein";
// Zeichenfolge vor relevanten Einträgen
$startstring = "";
// bis zum nächsten html tag bzw. Zeichenfolge nach relevanten Einträgen
$endstring = "<";
$file = @fopen ($url,"r");
if (trim($file) == "") {
echo "Service out of order";
} else {
$i=0;
while (!feof($file)) {
// Wenn das File entsprechend groß ist, kann es unter Umständen // notwendig sein, die Zahl 2000 entsprechend zu erhöhen. Im Falle
// eines Buffer-Overflows gibt PHP eine entsprechende Fehlermeldung aus.
$zeile[$i] = fgets($file,2000);
$i++;
}
fclose($file);
}
// Nun werden die Daten entsprechend gefiltert.
for ($j=0;$j<$i;$j++) {
if ($resa = strstr($zeile[$j],$startstring)) {
$resb = str_replace($startstring, "", $resa);
$endstueck = strstr($resb, $endstring);
$resultat .= str_replace($endstueck,"",$resb);
$resultat .= "; ";
}
}
// Ausgabe der Daten
$resultat = "Kontrolliert wird heute in den Linien ".$resultat."nicht erwischen lassen!";
return $resultat; |
---
Patrick Paulsen
================
http://www.designerkompetenz.de
|
 Profil
Website
Editieren
Zitieren
|
c3o
Posting-Schinder
Beiträge: 585 |
Es freut einen immer wieder, alten eigenen Code in der Anwendung zu sehen
|
 Profil
E-Mail
Website
Editieren
Zitieren
|
bastir
Mausakrobat
Beiträge: 150 |
Es gibt für dieses Vorgehen auch eine andere Klasse die sehr gut für das Content Grabbing eingesetzt werden kann.
Suche mal nach Snoopy Class oder so. Habe ich mal benutzt und war mehr als zufrieden.
So long
-------- schnipp
Hey, mein 100. Posting Darauf werde ich mal einen Kaffee trinken
-------- schnapp
---
Man kann nicht alles wissen, man muß nur wissen wo es steht!
Diese Nachricht wurde geändert von: bastir |
 Profil
Website
Editieren
Zitieren
|
Philipp Gérard
Foren-Team
Beiträge: 1502 |
c3o schrieb am 20.02.2004 13:05
Es freut einen immer wieder, alten eigenen Code in der Anwendung zu sehen |
hehe ;)
---
Arbeit ist das Feuer der Gestaltung. - Marx
|
 Profil
E-Mail
Website
Editieren
Zitieren
|
pajas
Pixelschubser
Beiträge: 22 |
Hallo Zusammen!
Habe auch schon lange nach so etwas gesucht, leider kann ich mit dem oben nichts anfangen. könnte mir jemand die genaue lösung ins forum schreiben? Besten Dank euch allen!
|
 Profil
E-Mail
Editieren
Zitieren
|
Rieke
Foren-Team
Beiträge: 1792 |
noch genauer ? "fertige Lösung" ?
Wie man dir schon in älteren Postings hier versucht hat zu erklären .. das hier ist ein Forum in dem man sich versucht gegenseitig zu helfen, wir sind nicht dazu da fertige Lösungen für dich schreiben ... wenn du natürlich jemanden mit einer Auftragsarbeit beehren willst, findest su sicherlich jemanden der sich anbietet.
---
|
 Profil
E-Mail
Website
Editieren
Zitieren
|
pajas
Pixelschubser
Beiträge: 22 |
sorry, war ja nur eine frage..... nicht gleich so ausfallend werden bitte!!
|
 Profil
E-Mail
Editieren
Zitieren
|
Rieke
Foren-Team
Beiträge: 1792 |
ich bin nicht ausfallen geworden, ich war nur überrascht und habe mir daraufhin deine alten Postings durchgelesen und gemerkt das dir das schonmal gesagt wurde ... es schien so als müsse man es offensichtlich nochmal wiederholen... hier wird halt gerne bei Problemen geholfen und dabei geben sich einige Leute hier verdammt viel Mühe jemandem Details zu erklären und sogar Code Teile werden gelegendlich neu geschrieben um jemandem zu helfen der sich wirklich Mühe gibt und festhängt ..
Nur einen kostenlosen ScriptService bietet das Forum irgendwie nicht an, ist auch nicht Sinn des ganzen.. ich denke das einmal wieder grade zu stellen, ist nicht unbedingt als "Ausfallend" zu bezeichnen.
---
|
 Profil
E-Mail
Website
Editieren
Zitieren
|