ubuntuusers.de

Webseite teilweise auslesen per php, bash, python,...?

Status: Gelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |

proximacentauri

Avatar von proximacentauri

Anmeldungsdatum:
24. März 2006

Beiträge: 102

Wohnort: Schwarmstedt

Hi!

Vielleicht tummeln sich hier ja auch ein paar Script-Spezialisten... ☺
Ich möchte eine Webseite teilweise per Script auslesen lassen um dann den Inhalt per php weiterzuverarbeiten. Die Webseite (per php generiert) selbst hat im HTML-Code Markierungen drin:

Der Bereich dazwischen soll irgendwie ausgelesen werden so das ich es per php weiterverarbeiten kann. Aber auch nur die dort vorhandenen Texte - alle Tags und so müssen weg, also so wie es in einem Text-Browser angezeigt werden würde. Am sinnvollsten wäre es ja das gleich in php zu machen, aber mir fehlt grad irgendwie die zündende Idee wie das gehen könnte.
Ich hatte schon überlegt aus php mit exec() elinks oder so aufzurufen und dann den Bereich irgendwie in einer Datei zu speichern und diese dann per php wieder aulesen zu lassen - aber von bash-Scripts habe ich noch weniger Ahnung... 😕

Hat jemand ne Idee und könnte mir einen kleinen Denkanstoß geben?

Vielen Dank!
Alex

Blattlaus

Avatar von Blattlaus

Anmeldungsdatum:
29. März 2006

Beiträge: 1399

- http://de.php.net/fopen
- Datei lesen
- mit reguläre Ausdrücken dir Informationen die du brauchst auslesen

Konkrete Antwort gibt es nur bei konkreter Fragstellung.

MightyTuX

Avatar von MightyTuX

Anmeldungsdatum:
16. Juli 2006

Beiträge: 129

.. unter perl ginge es zum Beispiel mit LWP.

dann kannt mir regEX den Bereich so stutzen bis er dir passt!

LG Mighty

Dr_Schaf

Anmeldungsdatum:
9. November 2007

Beiträge: 18

Wohnort: Lichtenstein (Sa)

<?php
 $res = fsockopen($url,80);
// --- oberen Part auslesen, interessiert aber nicht ;)
 while (!strpos(" ".$line,"<!--- Start -->")) $line = fgets($res);
// HTML-Content auslesen
 while (!strpos(" ".$line,"<!--- Ende -->")) {
  $line = fgets($res,4094);
  $out .= $line;
 }

// in $out sollte jetzt alles von <!--- Start --> bis <!--- Ende --> stehen
?>

ungetestet

proximacentauri

(Themenstarter)
Avatar von proximacentauri

Anmeldungsdatum:
24. März 2006

Beiträge: 102

Wohnort: Schwarmstedt

Wow!

Vielen herzlichen Dank!!

Von Euren Anregungen ausgehend habe ich mir die richtigen Befehle raussuchen können und ein php-Script zusammengekleistert. Ist zwar nicht schön und eingefleischten php-lern stellen sich vielleicht die Nackenhaare auf, aber es funktioniert!

<?php
$handle = fopen ("http://www.irgendwas.de/seite.php", "r");
while (!feof($handle)) {
        $buffer = fgets($handle);
        if(preg_match("/<!-- B.1 MAIN CONTENT -->/i", $buffer)) {
                $a = 1;
        }
        if($a == 1) {
                $ausgabe = $ausgabe . $buffer;
        }
        if(preg_match("/<!-- C. FOOTER AREA -->/i", $buffer)) {
                $a = 0;
        }
}
fclose ($handle);
$ausgabe = strip_tags($ausgabe);
echo $ausgabe;
?>


Die HTML-Tags sind dank strip_tags() auch weg, nur bleibt jetzt irgendwie noch ein wenig CSS über in der Ausgabe:

.post_title, .post_date { border-bottom: 1px solid #DDDDDD; }
.post_title { font-weight: bold; font-size: 12px; color: #000000; }
.post_date { text-align: right; font-weight: bold; }
.post_short { text-align: justify; padding-bottom: 5px; } 

Wie bekomme ich denn sowas in regex gepackt wenn sich das dauernd verändern kann?
Wenn jemand mir dafür noch ein Tipp geben könnte ware ich superglücklich!

Alex

TheHippo

Avatar von TheHippo

Anmeldungsdatum:
10. Dezember 2007

Beiträge: 20

Wohnort: Leipzig

mit:

......
fclose ($handle);
$ausgabe = strip_tags($ausgabe);
$ausgabe = ereg_replace("\.(.+){(.+)}","", $ausgabe);
echo $ausgabe;
....... 


solltest du das wegbekommen...
also der Code entfernt alles was mit einem "." beginnt worauf mind. 1 Zeichen folget und dann zwischen "{" und "}" noch mind 1 Zeichen steht hat. Falls du mit regulären Ausdrücken nicht so vertraut bist kann ich dir die Seite hier empfehlen: http://www.modrewrite.de/mod_rewrite.syntax.phtml (da steht das wichtigste auf kleinem Raum)

xabbuh Team-Icon

Anmeldungsdatum:
25. Mai 2006

Beiträge: 6411

Wenn allow_url_fopen in der php.ini aktiviert ist, kannst du alternativ auch versuchen, dir den Inhalt der Seite mittels CURL zu holen.

Gruß
Christian

proximacentauri

(Themenstarter)
Avatar von proximacentauri

Anmeldungsdatum:
24. März 2006

Beiträge: 102

Wohnort: Schwarmstedt

Wow! Ihr seid einfach toll! Vielen lieben Dank für die ganzen Tipps!! Ich habe es hinbekommen! ☺

Antworten |