Html Seite mit php parsen

Gabriel2001

Grünschnabel
Moin,

ich schreibe hier und da für meine Firma einige Datenbankabfrage oder Newsletterwebseiten zumeist in html/php, bin aber nicht der absolute Crack ;) .
Vielleicht kann mir aber einer von euch weiterhelfen.
Mein Großhändler hat einen Onlinekatalog, wobei die Suchergebnisse in html angezeigt werden (geschieht alles auf dem Server des Großhändlers). Ich würde gerne diese Ergebnisse an eine eigene Seite parsen, um sie mit eigenem Layout für meine Kunden bereitzustellen (wäre rechtlich auch abgesichert). Ist so etwas möglich und wie muss ich mir das vorstellen, kleiner grober Überblick wär super.

Danke im voraus

Gabriel
 
...ok sagen wir es etwas genauer...ich würde gerne die Suchergebnisse sozusagen auf meinen server herüberholen und mit neuem Layout versehen oder auch bestimmte Artikel herausfiltern, die dann auf meiner Seite nicht gezeigt werden sollen. sorry, falls parsen in diesem Zusammenhang nicht der korrekte Ausdruck ist.
 
Wikipedia – Parser hat gesagt.:
Ein Parser […] ist ein Programm, das entscheidet, ob eine Eingabe zur Sprache einer bestimmten Grammatik gehört.
Somit beschreibt das neudeutsche „parsen“ die Überprüfung/Entscheidung, ob eine gewisse Datenfolge einer bestimmten Sprachgrammatik angehört. So könnte man auch sagen, dass ein Sprachlehrer auch ein Parser sei.
 
Gabriel2001 hat gesagt.:
Ich würde gerne diese Ergebnisse an eine eigene Seite parsen, um sie mit eigenem Layout für meine Kunden bereitzustellen (wäre rechtlich auch abgesichert). Ist so etwas möglich und wie muss ich mir das vorstellen, kleiner grober Überblick wär super.

Das mit dem parsen ist prinzipiell schon ganz richtig. Nur als grober Überblick:

1. Die Seite in deinem PHP-Skript über HTTP-Protokoll öffnen. Das geht (meistens) mit fopen('http://www.example.com/seite.html').

Aber Achtung (bevor ich wieder Kritik einstecken muss). Nicht bei jedem Hoster klappt das. Einige haben die Option zum Öffnen von URLs über fopen() ausgeschaltet. In diesem Fall müsstest du den etwas komplizierteren Weg über fsockopen() gehen.

2. Nach dem Einlesen der Seite, die unerwünschten HTML-Codes entfernen bzw. die erwünschten Informationen herausfiltern. Je nachdem wie die Seite aufgebaut ist, kann das mehr oder weniger Aufwand bedeuten. In jedem Fall wirst du String-Funktionen und sicher auch sowas wie preg_match oder preg_replace brauchen:

http://de.php.net/strings

http://de.php.net/manual/de/reference.pcre.pattern.modifiers.php

3. Wenn du die erwünschten Daten hast, kannst du sie entsprechend als eigene Seite anzeigen.

Am einfachsten wäre es natürlich, wenn die Originalseite mit CSS (Cascading Stylesheets) arbeitet. Dann würde es unter Umständen ausreichen, den HTML-Code unverändert anzuzeigen, und nur das Stylesheet auszutauschen. Dann kannst du dir im Prinzip die Punkt 2 und 3 sparen. Das wäre dann sicher die eleganteste Lösung.

Gruß

Marian
 
Am einfachsten wäre es, wenn dein Großhändler die Daten neben einem HTML-Format auch als Rohdaten in einem für Maschinen besser lesbaren Format wie etwa XML anböte.
 
@heddesheimer- Vielen Dank für die schnelle und ausführliche Antwort. Mir ist nur ein Part des Ganzen noch nicht so ganz klar. Was mache ich denn, wenn ich die url der Seite, die ich auslesen will gar nicht vollständig im Vorfeld kenne?
Bsp.
http://www.testshop.de/shop/index.htm gibt mir die Suche aus.

Wenn ich nun einen Artikel Bsp. Schrauben suche, bekomme ich z.B. die url
http://www.testshop.de/shop/artikelid=65xybfsdf67768668

Da ich ja im Vorfeld nicht weiß, was ich angezeigt bekomme, kann ich da dennoch wie beschrieben vorgehen?

Gruß
Gabriel
 
Gabriel2001 hat gesagt.:
Was mache ich denn, wenn ich die url der Seite, die ich auslesen will gar nicht vollständig im Vorfeld kenne?
Bsp.
http://www.testshop.de/shop/index.htm gibt mir die Suche aus.

Wenn ich nun einen Artikel Bsp. Schrauben suche, bekomme ich z.B. die url
http://www.testshop.de/shop/artikelid=65xybfsdf67768668

Da ich ja im Vorfeld nicht weiß, was ich angezeigt bekomme, kann ich da dennoch wie beschrieben vorgehen?

Gruß
Gabriel

Okay, jetzt wird's kompliziert ;-)

Du willst eine Suchseite laden und analysieren. Dann in das Suchfeld einen Suchbegriff eintragen, die Suchseite absenden und die Ergebnis-Seite dann in deinem Skript anzeigen?

Das dürfte nicht mit wenigen Sätzen zu erklären sein. Vielleicht mag ja jemand mal ein Tutorial dazu schreiben?

Am einfachsten wäre es wohl, wenn du den Suchbegriff auf der Seite in die URL packen könntest, so wie das bei Google möglich ist:

http://www.google.de/search?hl=de&q=warenkorb

Dann kannst du genauso vorgehen wie beschrieben, nur dass du an die URL beim fopen den Parameter mit anhängst.

Wenn das nicht geht, solltest du deinen Lieferanten bitten, eine enstprechende Schnittstelle für dich verfügbar zu machen. Alles andere ist ziemliches Gebastel und würde nur dann Sinn machen, wenn man gar keine andere Möglichkeit hat (z.B. wenn der Betreiber der Website nicht wissen soll, was man da macht ;-) - sorry aber der Eindruck drängt sich gerade auf)

Wenn's aber gar nicht anders geht, musst du wohl einen POST-Request an die Suchseite versenden. Wie das geht findest du hier:

http://www.php-faq.de/q/q-code-post.html

Gruß

Marian
 
Danke für deine Antwort und wie ich mir dachte würde das in der Realisation eine schöne Bastellei geben :) . Ich kann dich aber in soweit "beruhigen", dass ein Einverständnis des Großhändlers vorliegt und ich nichts vorhabe, was ihn umgeht. Aktuell geht es bei mir darum, dass ich einen Online Shop des Großhändlers benutze, indem Kunden ihre Bestellungen auslösen und via Callersteuerung die Bestellung aber auf meinem Tisch ("Rechner") landet. Leider bietet der Händler auch Bücher aus dem Bereich Erotik an, was einigen meiner Kunden sauer aufstößt. Da der Händler technisch keine Abhilfe schaffen kann (wohl auch nicht will, da der Bucherotikumsatz wohl bei ihm ganz gut ist) hat er mir aber erlaubt eine Lösung zu entwickeln, die sich seiner Seiten bedient. Ich bin im Grunde nur auf diesen Lösungsansatz gekommen, da der Kauf der Daten zwar möglich wäre, aber zu teuer ist. Auch ein Abschalten der Katgorie bzw. Warengruppe ist für ihn nicht möglich, da er keine Warengruppen anlegt.
 
Hallo zusammen,

ich habe bisher Eure Diskussion verfolgt.
Nun frage ich mich, wie der 'Großhändler', wenn er keine Warengruppen hat, sein Sortiment verwaltet. Also eine Datenbank hat hat er, sonst würde er ja kaum einen Onlineshop haben.
Und wenn er einen Onlineshop hat, dann hast Du, wie Du weiter oben schon geschrieben hast, die Möglichkeit, nach Waren zu suchen und das geht nur, wenn man auch verschiedene Tabellen für verschiedene Warengruppen hat. Jeder Shop hat Warengruppen.

Also must Du nur auf den SQL-Server zugreifen und Dir die entsprechenden Rohdaten saugen.
Mal angenommen, er hat wirklich keine Warengruppen, jeder Shop hat für jeden Artikel eine ID. Und ich nehme nicht an, dass Dein 'Großhändler' alle Artikel durcheinander eingegeben hat.
Also saugst Du Dir alle Artikel von .. bis ID und die ID's von den Porno-Büchern bleiben außen vor.

Alles andere ist Käse

Asterix
 
Zurück