Externe Seite nach Weiterleitung auslesen

DoRiMaN

Erfahrenes Mitglied
Hallo an alle!

Ich versuche zur Zeit, auf Daten einer Webseite zuzugreifen.
Zum Klarstellen: hab dem Betreiber geschrieben, ist i.O. so, leider gibts keine Schnittstelle für auf die DB, ich soll doch direkt aus der Webseite auslesen.
Ich versuche wie folgt den Inhalt der Seite zu holen:
PHP:
$filestream = fopen($url, 'r');
if($filestream){
	while(!feof($filestream)) {
		$buffer = fgets($filestream, 4096);
		echo $buffer;
	}
	fclose($filestream);
}
das funktioniert auch soweit...
Es gibt aber Seiten auf dem externen Server, die zuerst weitergeleitet werden (nach dem Prinzip: nur ein Suchresultat? -> direkt zum Artikel).
Diese Weiterleitung sollte ich mitverfolgen können, denn Schlussendlich möchte ich auf die letzte Seite, die nach der Weiterleitung, zugreifen können.

Ist das realisierbar?


Danke und Gruss
doriman
 
Wenn du nur die letzte Seite haben möchtest, warum nimmst du sie denn nicht gleich als Url?
 
Ist das realisierbar?

Ich denke mal die Frage kann man in 99% aller Fälle mit Ja beantworten ;)

Also ich glaube du musst in dem Fall ein wenig "Browser spielen" wenn es sich um eine automatische Weiterleitung handelt. Dazu musst du einfach nur wissen wie die Weiterleitung realisiert wurde und den Quelltext nach dem entsprechenden Link parsen auf den verwiesen werden soll.

Falls du den Link gefunden hast musst du einfach nochmal ein fopen machen.
Oder habe ich dich falsch verstanden?

lg
 
Hallo, danke für Eure Antworten!

Wenn du nur die letzte Seite haben möchtest, warum nimmst du sie denn nicht gleich als Url?
die Seite weiss ich nicht, da es immer verschiedene URLs sind, deshalb sollte ich es dynamisch (über GET gebe ich einen Suchbegriff mit) lösen.

Also ich glaube du musst in dem Fall ein wenig "Browser spielen" wenn es sich um eine automatische Weiterleitung handelt. Dazu musst du einfach nur wissen wie die Weiterleitung realisiert wurde und den Quelltext nach dem entsprechenden Link parsen auf den verwiesen werden soll.

Falls du den Link gefunden hast musst du einfach nochmal ein fopen machen.
Oder habe ich dich falsch verstanden?
das mit dem Browser spielen tönt gut :-)

ich denke Du hast mich falsch verstanden: Bzw. ich habs nicht klar erklärt :-)
Soweit ich sehen konnte funktioniert die Weiterleitung nicht über einen Link oder Metatag, denn ein fopen auf die erste Seite ist nicht möglich, da kommt gleich eine Fehlermeldung.
Also denke ich wird das vorher, also z.B. über die PHP-Header weitergeleitet, nicht über HTML oder JavaScript...
Das mit dem parsen hatte ich auch vor, doch das ging dann eben aus diesem Grund nicht...

Verwende Werkzeuge, die dies bereits automatisch machen, wie beispielsweise Curl (siehe CURLOPT_FOLLOWLOCATION-Option).
Danke Gumbo, werde mich Mal mit Curl auseinandersetzen.
Wenn ichs nicht schaffe melde ich mich wieder :-)


Gruss
doriman
 
Wenn ichs nicht schaffe melde ich mich wieder :-)
nicht geschafft, hier bin ich wieder :eek:

Hab Mal ein Beispiel versucht:

curl.php (Beispiel von der PHP-Seite)
PHP:
<?php
$ch = curl_init('localhost/scripts/curl/test1.php');
$fp = fopen('output.txt', 'w');

curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);

curl_exec($ch);

curl_close($ch);
fclose($fp);
?>

test1.php
PHP:
<?php
header('Location: test2.php');
exit();
?>

test2.php
PHP:
test2 HERZLICHE GRATULATION

wenn ich nun curl.php aufrufe, und danach die Datei output.txt öffne, sehe ich "test2 HERZLICHE GRATULATION", also klappts!

Wenn ich es aber mit der richtigen Seite mache, erhalte ich folgendes:
HTML:
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>505 HTTP Version Not Supported</title>
</head><body>
<h1>HTTP Version Not Supported</h1>
<p>The server encountered an internal error or
misconfiguration and was unable to complete
your request.</p>
<p>Please contact the server administrator,
 webmaster@zelluloid.de and inform them of the time the error occurred,
and anything you might have done that may have
caused the error.</p>
<p>More information about this error may be available
in the server error log.</p>
<hr>
<address>Apache Server at <a href="mailto:webmaster@zelluloid.de">www.zelluloid.de</a> Port 80</address>
</body></html>

Die Adresse in curl_init ist dann "http://www.zelluloid.de/suche/index.php3?qstring=2 Fast 2 Furious"...

Also muss es auf zelluloid.de anders gelöst sein?
Aber wenns z.B. Meta-Tags wären, würde man die ja sehen?
 
Zurück