# Html Seite mit php parsen



## Gabriel2001 (29. Juli 2005)

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


----------



## Gumbo (29. Juli 2005)

> Ich würde gerne diese Ergebnisse an eine eigene Seite parsen, um sie mit eigenem Layout für meine Kunden bereitzustellen […]


Was bitte verstehst du in diesem Zusammenhang unter „parsen“?


----------



## Gabriel2001 (29. Juli 2005)

...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.


----------



## Gumbo (29. Juli 2005)

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.


----------



## heddesheimer (29. Juli 2005)

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


----------



## Gumbo (29. Juli 2005)

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.


----------



## Gabriel2001 (29. Juli 2005)

@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


----------



## heddesheimer (29. Juli 2005)

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.
> 
> ...



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


----------



## Gabriel2001 (29. Juli 2005)

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.


----------



## Asterix-Ac (29. Juli 2005)

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


----------



## Gabriel2001 (30. Juli 2005)

Es ist natürlich logisch, dass wenn du Rohdaten hast, diese auch ordnen und verwalten kannst, aber das setzt nun leider voraus, dass du Zugriff auf die Datenbank hast (was niemand macht...schon alleine aus Sicherheitsgründen) oder du die Daten auf andere Weise bekommst, was in meinem Falle sehr teuer ist.

Warengruppen sind nicht unbedingt Voraussetzung für die Sortierung einer Datenbank und immer von den Produkten abhängig, die du anbietest. Wenn du z.B. Bücher hast, machen Warengruppen nur bedingt Sinn, da es zuviele Titel gibt, die in Grauzonen fallen und keiner Thematik oder mehreren Thematiken zuordnebar sind. Da jedes Buch (fast jedes) eine ISBN Nummer hat, ist also das Sortierkriterium genau diese.


----------

