Archiv verlassen und diese Seite im Standarddesign anzeigen : Webseiteninhalte auslesen (ggf. mit DOM)
JakobD
30.06.2009, 23:17:17
Hallihallo :)
Ich bastel gerad an einem kleinem Projekt rum (läuft auch ganz gut), aber es gibt noch eine Sache wo ich bis jetzt gar nicht weiter gekommen bin und nicht so viel Ahnung habe wie ich das überhaupt machen könnte.
Ihr kennt ja sicher studiVZ (http://studivz.net), schülerVZ und meinVZ. Also wenn ihr mal auf der Hauptseite links unten guckt gibt es da ja so einen kleinen Kasten wo immer irgendwelches Zeugs drinsteht. Den Inhalt des Kastens würde ich gerne auslesen.
Ich bräuchte eine möglichst performante Lösung (aber das nur weil ich ein Perfektionist bin) und vielleicht muss man da irgendwas mit dem Document Object Model sich basteln, was wahrscheinlich auch ganz gut gehen müsste. (Die ID vom Kasten ist "LeftsideBox")
Mit Stringfunktionen kann ich diesmal nicht arbeiten weil die Länge der Meldungen im Kasten natürlich variieren (das hätte ich dann auch noch selber geschafft).
TIA,
Jakob
N'Abend ...
Du willst fremden Content auslesen und auf einer eigenen Seite verwenden ?
Die "Eigentümer" der "LeftSideBox" werden sich bestimmt über dein Engagement freuen.
Schön'Abend noch ...
Indyk
01.07.2009, 09:21:16
Hallo Jakob,
a) ohne Erlaubnis ist das Diebstahl.
b) Schlage dem Betreiber vor das er eine Schnittstelle für die gewünschten Inhalte anbietet
c) Falls du die Erlaubnis hast:
Seite einlesen (ob zuerst mit file_get_contents oder gleich mit DOMDocument::loadHTMLFile)
und dann wie schon von dir selbst vorgeschlagen mittels der dom knoten zu deiner gewünschten ID (getElementById) alternativ könntest du auch mit xpath arbeiten oder auch mit simplexml falls die seite valides xhtml ist.
JakobD
01.07.2009, 17:35:43
Ok danke für eure Erläuterungen bzgl. des geistlichen Eigentums etc.
Abgesehen davon dass die Texte im Kasten da nicht annähernd eine gewisse Schöpfungshöhe was weiß ich erreichen - mir geht es im Moment darum das mit dem DOM zu verstehen.
Und deshalb wäre ich ganz dankbar wenn der Punkt c) des letzten Beitrags noch mal etwas weiter erläutert werden könnte. file_get_contents kann ich nämlich auch noch.
Hochachtungsvoll,
Jakob
Indyk
02.07.2009, 10:40:34
Ach jakob, hättest du die Suchfunktion benutzt und dein Schlagword "DomDocument" eingegeben hättest du folgende Beispiele finden können:
http://www.selfphp.de/forum/showthread.php?t=17079&highlight=DomDocument
(und noch andere die ich jetzt aber nicht so informativ fand wie meinen beitrag aus 2007 ; )
cortex
02.07.2009, 11:07:49
Indyk, du verstehst das nicht ganz... der auftrag lautete:
[...] wenn der Punkt c) des letzten Beitrags noch mal etwas weiter erläutert werden könnte.
und denk bitteschön daran:
file_get_contents kann ich nämlich auch noch.
cx
JakobD
02.07.2009, 14:58:36
Okey ich hab dann also selber mal etwas rumprobiert. Hier mein Code:
<?php
$doc = new DomDocument;
$doc->validateOnParse = true;
$doc->loadHTMLFile('http://www.studivz.net/');
echo $doc->getElementById('LeftsideBox')->nodeValue;
?>
Im Prinzip funktioniert der denke ich auch ganz gut. Ich bekomme allerdings diese Warnungen:
Warning: DOMDocument::loadHTMLFile() [function.DOMDocument-loadHTMLFile]: Unexpected end tag : div in http://www.studivz.net/, line: 185 in /xxx/kasten/auslesen.php on line 4
Warning: DOMDocument::loadHTMLFile() [function.DOMDocument-loadHTMLFile]: Unexpected end tag : div in http://www.studivz.net/, line: 185 in /xxx/kasten/auslesen.php on line 4
Das ist aber nicht mein Verschulden, sondern liegt am Code von studiVZ, oder?
Die Warnungen kann ich somit also getrost ignorieren, oder?
Ein Problem gibt es aber noch: Die Typen von studiVZ schreiben leider so Zeichen wie ä, ö und ü direkt in den Quelltext anstatt ä oder so zu benutzen. Das führt dann im Umkehrschluss dazu, dass PHP diese Zeichen tötet und ein ö wurde dann gerade hierzu: ö
Also wie kann ich die Kodierung da irgendwie ändern beim einlesen?
Danke, Jakob
rarios
02.07.2009, 15:21:05
Abgesehen davon dass die Texte im Kasten da nicht annähernd eine gewisse Schöpfungshöhe was weiß ich erreichen - mir geht es im Moment darum das mit dem DOM zu verstehen.
Das ist egal. Du ließt Daten aus einem geschlossenen Bereich aus.
Ließ Dir mal lieber die AGB's von StudiVZ Ltd. durch.
Wenn Du wirklich 15 bist haben Deine Eltern dann ordentlich zu knabbern an den Kosten für RA, Gerichtskosten sowie zivile Forderungen.
Immerhin publizierst Du hier eindeutig den Regelverstoß...
JakobD
02.07.2009, 15:45:39
Dass man Daten aus dem geschlossen Bereich da nicht rausholen darf ist klar. Den Kasteninhalt kann man aber auch gut lesen wenn man ausgeloggt ist bzw. kein Mitglied oder so ist. Teste es selbst ;)
Und außerdem -> Ohne die explizite Erlaubnis der studiVZ Ltd. werde ich sowieso nix machen.
So. Aber vielleicht hilft mir ja jemand bei meinem Umlaut-Problem oder auch irgendwie anders. Schließlich will ich irgendwann mal etwas PHP können. Danke.
cortex
02.07.2009, 15:58:19
Ein Problem gibt es aber noch: Die Typen von studiVZ schreiben leider so Zeichen wie ä, ö und ü direkt in den Quelltext anstatt ä oder so zu benutzen.
wenn der zeichensatz der seite korrekt gesetzt ist
per header: header( 'Content-Type: text/html; charset=charset' )
und optional
per meta: <meta http-equiv='content-type' content='text/html; charset=charset=charset'>
spricht auch nichts dagegen - ganz im gegenteil: die kodierung der umlaute als entites wäre unangebracht.
cx
JakobD
02.07.2009, 16:04:26
Vielen Dank. Hat geklappt mit dem hier am Anfang:
header('Content-Type: text/html; charset=UTF-8');
Falls ich verklagt werde sag ich euch Bescheid ;)
DokuLeseHemmung
02.07.2009, 18:41:52
Nee, lass mal....
vBulletin® v3.8.3, Copyright ©2000-2024, Jelsoft Enterprises Ltd.