Auf fremde Webseiten zugreifen und Inhalte für eigene Webseite verwende

mariatroeger

Grünschnabel
Hallo community,

ich hätte mal eine Frage: wir würden gerne eine Seite aufbauen die aus Inhalten zwei anderer Webseiten besteht (Die Erlaubnis der Betreiber haben wir schriftlich und demnach wäre das kein Problem)

Meine Frage: wie kann ich auf bestimmte DIV´s zugreifen bzw. wie kann ich diese Elemente auf der eigenen Seite darstellen ? PHP ist wohl das richtige Werkzeug dafür , oder ?

Für jede Hilfe bedanke ich mich jetzt schon ;-)

LG
mari
 
Für die Auswertung würde ich dir die DOMDocument-Klasse empfehlen.
Mit dieser Klasse kann man das HTML gut auswerten und das Element beziehen, welches man möchte.

Zum Auslesen der Seite fallen mir auf anhieb 2 Varianten ein
Die erste Variante ist die betreffende Seite per file_get_contents auslesen und den gewonnene
HTML Code der Mehtode DOMDocument::loadhtml übergeben.

Die andere Variante wäre die Seite gleich mittels DOMDocument::loadHTMLFile zu laden dadurch wäre die Dom Struktur bereits geladen.

Bei der 2. Variante bin ich mir aber nicht zu 100% sicher, dass sie funktioniert.

Ich hoffe, dass ich dir helfen konnte oder zumindest ein paar Ideen verschaffen konnte.
 
Vielen Dank @merzi86 für deine Antwort.

Gibt es zu diesem Thema ein hilfreiches Tutorial für Dummys ? :( Das was ich bisher im Netz gefunden habe ist nicht ... ähm, leicht verständlich !

LG
mari
 
Ein direkte Anleitung hab ich leider nicht.
So kompliziert ist es auch nicht ;)

Ich habe es einmal ausprobiert und es funktioniert auch direkt mit der Methode loadHTMLFile.
Dadurch reicht dieser Code, um den Inhalt von des Divs mit der ID meinDIV abzufangen und auszugeben.

PHP:
$file = 'https://www.meine-domain.de';
$DOM = new DOMDocument( );
    $DOM ->loadHTMLFile($file);
   
    $NODE = $DOM ->getElementById('meinDIV');
   
    echo $NODE ->nodeValue;

Es kommt dann nur darauf an, was du genau vorhast.
 
Hi merzi86,

vielen Dank für deine Antwort, leider kriege ich bei meinem Versuch einige Fehlermeldungen.

Habe es mal mit folgenden Beispiel getestet:

Code:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>dom-test</title>
</head>

<body>

<?php

$file = 'https://www.tutorials.de';
$DOM = new DOMDocument( );
    $DOM ->loadHTMLFile($file);
  
    $NODE = $DOM ->getElementById('logo');
  
    echo $NODE ->nodeValue;
   
?>

</body>
</html>


und folgende Fehlermeldungen erhalten


Warning: DOMDocument::loadHTMLFile(): Tag nav invalid in https://www.tutorials.de, line: 132 in C:\xampp\htdocs\dom.php on line 14

Notice: DOMDocument::loadHTMLFile(): Namespace prefix xen is not defined in https://www.tutorials.de, line: 162 in C:\xampp\htdocs\dom.php on line 14

Warning: DOMDocument::loadHTMLFile(): Tag xen:if invalid in https://www.tutorials.de, line: 162 in C:\xampp\htdocs\dom.php on line 14

Notice: DOMDocument::loadHTMLFile(): Namespace prefix xen is not defined in https://www.tutorials.de, line: 163 in C:\xampp\htdocs\dom.php on line 14

Warning: DOMDocument::loadHTMLFile(): Tag xen:if invalid in https://www.tutorials.de, line: 163 in C:\xampp\htdocs\dom.php on line 14

Warning: DOMDocument::loadHTMLFile(): htmlParseEntityRef: no name in https://www.tutorials.de, line: 372 in C:\xampp\htdocs\dom.php on line 14

Warning: DOMDocument::loadHTMLFile(): htmlParseEntityRef: no name in https://www.tutorials.de, line: 372 in C:\xampp\htdocs\dom.php on line 14

Warning: DOMDocument::loadHTMLFile(): htmlParseEntityRef: no name in https://www.tutorials.de, line: 479 in C:\xampp\htdocs\dom.php on line 14

Warning: DOMDocument::loadHTMLFile(): htmlParseEntityRef: no name in https://www.tutorials.de, line: 602 in C:\xampp\htdocs\dom.php on line 14

Warning: DOMDocument::loadHTMLFile(): htmlParseEntityRef: no name in https://www.tutorials.de, line: 602 in C:\xampp\htdocs\dom.php on line 14

Warning: DOMDocument::loadHTMLFile(): htmlParseEntityRef: no name in https://www.tutorials.de, line: 877 in C:\xampp\htdocs\dom.php on line 14

Warning: DOMDocument::loadHTMLFile(): htmlParseEntityRef: no name in https://www.tutorials.de, line: 1106 in C:\xampp\htdocs\dom.php on line 14

.....


was habe ich falsch gemacht ?
 
Prinzipiell hast du nichts falsch gemacht. DOMDocument kann (noch) nicht mit HTML5 umgehen, tutorials.de verwendet jedoch HTML5, wie man am DOCTYPE-Header erkennen kann (siehe HTML-Source-Code).

Es gibt PHP-Libs, die das können, evtl. möchtest du dir mal https://github.com/html5lib/html5lib-php ansehen. Sieht allerdings so aus, als würde das nicht mehr weiter entwickelt.
 
Inhalte aus HTML Webseiten in eine andere übertragen ist eigentlich kein Problem, es sei denn diese Seite nutzt php, denn php ist eine Serverseitiges Scriptsprache, bedeutet der Betrachter der Seite sieht das, was er aufgerufen hat, bei html sieht er das was html zu Verfügung stellt.
Bei html sind die Texte und Bilder fest in der Seite eingebaut und der Browser läd die gesamte Seite. Bei php dagegen werden die Inhalte meistens erst über eine Datenbank abgerufen, dabei bleibt das Template (Theme) also das Aussehen der Homepage nicht nur gleich, sondern es bleibt die Selbe es wird lediglich der Inhalt verändert, also Texte und Bilder.

Möchtest du eine komplette Homepage samt Inhalte kopieren oder nur die Inhalte wie Bilder und Texte? Wenn nur die Inhalte, dann würde ich eine verbindung zur Datenbank aufbauen und diese abrufen.
Wenn du wie du schreibst eh die Erlaubniss hast, dann frag doch mal welches CMS-System diese nutzt, denn dann könntest du das selbe CMS installieren und nutzt die selbe Datenbank anbindung.
 
Paar Gegenpunkte:

PHP ist nicht unbedingt ein Problem. Im Gegensatz zu reinen HTML-Seiten muss man aber
beachten, was das Programm macht, statt einfach stupide alles Erhaltene herunterzuladen.
Beispiele wären
a) die Forenthreads hier. Wenn man nicht weiß, dass es eine Beitrags-ID
gibt usw. wird man schwer alle Beiträge laden können
b) bei sowas wie Zufallszahlengeneratoren oder Sachen, die direkt von beliebigen
Formulareingaben abhängen kann man natürlich schwer "alles" herunterladen
c) Logins etc. erforderlich, da muss man seinen Doanload eben entsprechend anpassen.
d) Auf sowas wie Templates verlassen hängt auch immer von der eigentlichen Seite ab.
...kurz, der Download muss für jede Webseite separat programmiert werden,
Aber es geht.

Ein externer Datenzugriff ist bei den vielen Hostern etc. aus Sicherheitsgründen
nicht möglich, auch wenn der Seitenbetreiber es einem erlauben würde.
Und auch wenn, ist es alles andere als ratsam.

Warum sollte man das selbe CMS brauchen?
 
sheel, im grunde hast Du Recht, aber das selbe CMS macht die Übertragung von einer in die andere DB einfacher, da es die selben Tabellen und Tabellennamen sind.
Es ist dann auch einfacher ein php-Script zu schreiben, das die Daten abruft.
Wenn die andere Seite ein cms-System nutzt, so könnte man die Inhalte in RSS Feeds bereit stellen und diese auf jeder Homepage einbinden.
 

Neue Beiträge

Zurück