PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : HTML-Bereich extrahieren und importieren


spectas
02.10.2009, 22:54:40
Hallo allerseits,

ich würde gerne einen Ausschnitt aus einer Webseite sozusagen als "Newsticker" auf meiner eigenen Seite anzeigen lassen. Leider sind meine PHP-Kenntnisse nicht besonders ausgeprägt. Habe mich schon etwas eingelesen, aber vor allem der Gesamtaufbau vom Algorithmus macht mir Gedanken. Zunächst einmal der "Quell-Quelltext":


<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>

<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="content-type">
</head>

<body>

<div class="b_newsbox">
<h2>Newsbox</h2>

<h3><a href="news_1233.html">Neuigkeit 1</a></h3>
<div class="b_meldung" style="margin-bottom:0px">Kurzbeschreibung 1</div>
<div class="b_platzhalter"></div>
<div class="b_meldung" style="padding-top:0px">[01.09.2009]</div>

<h3><a href="artikel/art_1234.html">Neuigkeit 2</a></h3>
<div class="b_meldung" style="margin-bottom:0px">Kurzbeschreibung 2</div>
<div class="b_platzhalter"></div>
<div class="b_meldung" style="padding-top:0px">[02.09.2009]</div>

<h3><a href="cms/news_1235.html">Neuigkeit 3</a></h3>
<div class="b_meldung" style="margin-bottom:0px">Kurzbeschreibung 3</div>
<div class="b_platzhalter"></div>
<div class="b_meldung" style="padding-top:0px">[03.09.2009]</div>
</div>

</body>
</html>


Nun meine Fragen:
1. Meldungen aus externer Webseite extrahieren:
Gibt es eine Möglichkeit, den generierten HTML-Code des div-Bereiches "b_newsbox" auszulesen und per php auf meiner eigenen Seite anzeigen zu lassen? Das könnte vielleicht mit der Funktion preg_match() erfolgen? Der Startpunkt ist dabei natürlich der Schnipsel mit dem "b_newsbox". Nur der Endpunkt ist leider ein kaum von anderen zu unterscheidendes "</div>". Alternativ könnte man vielleicht jede Meldung einzeln extrahieren? Auch dort fehlt mir aber ein guter Ansatz, mit einem regulären Ausdruck abzugrenzen. Ideen?

2. Links editieren:
Die Links (href) haben dann jedoch relative Pfade, ich muesste sie aber verändern und die Domain davorsetzen ("www.seite.de/"). Geht das? Es müsste wohl eine Ersetzungsfunktion mitlaufen ("preg_replace()"?). Also WENN «href="cms» DANN ersetze es durch «href="http://www.seite.de/cms».
Meines Erachtens etwas in der Richtung:
echo preg_replace('/<a href="', '<a href="http://www.seite.de/', $zeichenkette);
Mein Problem ist nur, was ist, wenn mal ein absoluter Pfad als Link dabei ist? Kann man das ausschließen, damit nicht der Domainname vornangehängt wird?

Also, ich wäre für Starthilfe sehr dankbar!

Viele Grüße,

Spectas

feuervogel
03.10.2009, 00:43:40
weiß der inhaber der fremden seite das? warum stellt er dafür nicht eine einfache api zur verfügung?

spectas
03.10.2009, 12:57:26
Das habe ich mich auch schon gefragt.. Der Inhaber hat nichts dagegen. Sind ja auch nur die Links auf seine Seite, so dass die Zugriffszahlen steigen.
Hatte auch bereits gefragt, ob man ein RSS-Feed bereitstellen könnte oder so, das würde aber Arbeit bedeuten und da hat er keine Lust/Zeit. Daher muss ich das alleine hinkriegen. Also, wäre für Hilfe dankbar!

Grüße!

R4Zz0R
05.10.2009, 01:05:43
Formatier doch selber und les nur den inhalt der einzelnen classen aus....
<div class="b_meldung"> ect.....

spectas
07.10.2009, 15:19:03
Das klingt gut,

wie kann ich das am besten realisieren? Mit Perl oder kann ich die Klassen mit PHP-Mitteln auslesen?

Danke im Voraus!

Spectas

Indyk
07.10.2009, 15:39:38
Hallo spectas, ich würde das HTML in das DomDocument (http://de.php.net/book.dom) laden und dann mit Xpath arbeiten.

damit kann man klassen und andere attribute ganz leicht filtern.
dann brauchst du nur noch das gewünschte html abzuspeichern / auszugeben.