Erhalte den Inhalt (Text) einer URL, nachdem Javascript mit PHP ausgeführt wurde

8

Ist es möglich, den Inhalt einer URL mit PHP zu erhalten (mit einer Art Funktion wie file_get_contents oder header ), aber erst nach der Ausführung von etwas JavaScript-Code?

Beispiel:

mysite.com hat ein Skript, das loadUrlAfterJavascriptExec('http://exampletogetcontent.com/') enthält und den Inhalt druckt / echoet. Stellen Sie sich vor, dass jQuery auf http://exampletogetcontent.com/ ausgeführt wird, das DOM ändert, und loadUrlAfterJavascriptExec wird das resultierende HTML

erhalten

Können wir das tun?

Nur um klar zu sein, was ich will ist, den Inhalt einer Seite durch eine URL zu bekommen, aber nur nachdem JavaScript auf der Zielseite läuft (die eine PHP bekommt ihren Inhalt).

Mir ist bewusst, dass PHP läuft, bevor die Seite an den Client gesendet wird, und JS erst danach, aber dachte, dass es vielleicht eine Expertenumgehung gibt.

    
Victor Ferreira 13.02.2015, 17:43
quelle

2 Antworten

13

Update 2 Fügt weitere Details zur Verwendung von phantomjs aus PHP hinzu.

Update 1 (nachdem klargestellt wurde, dass JavaScript auf target Seite zuerst ausgeführt werden muss)

Methode 1: Benutze phantomjs (wird JavaScript ausführen);

1. Laden Sie phantomjs herunter und legen Sie die ausführbare Datei in einen Pfad, den Ihre PHP-Binärdatei erreichen kann.

2. Legen Sie die folgenden 2 Dateien in dasselbe Verzeichnis:

get-website.php

%Vor%

get-website.js

%Vor%

3. Suchen Sie nach get-website.php und der Zielwebsite, http://google.com Inhalt wird nach dem Ausführen von JavaScript inline zurückgegeben. Sie können dies auch über eine Befehlszeile mit php /path/to/get-website.php aufrufen.

Methode 2: Benutze Ajax mit PHP (Kein phantomjs wird also kein Javascript ausführen);

/get-website.php

%Vor%

test.html

%Vor%     
AndrewD 13.02.2015 18:44
quelle
0

Alles PHP wird ausgeführt, bevor die Informationen an den Client gesendet werden. Das gesamte JavaScript wird ausgeführt, nachdem die Informationen an den Client gesendet wurden.

Um nach dem Laden der Seite etwas mit PHP zu tun, muss die Seite entweder

sein
  1. neu laden, Speichern der JavaScript-generierten Informationen in einem Cookie oder als POST-Daten (nicht ideal) ODER
  2. Mache einen Ajax-Aufruf an eine andere PHP-Datei, um die Daten zu erhalten. (viel besser)

Da die Daten anscheinend in einer anderen Datei als Ihrer PHP-Datei enthalten sind, ist dies eine ziemlich gute Lösung. Da Sie es mit jQuery getaggt haben, nehme ich an, dass Sie es verwenden.

jQuery hat eine Reihe von Seiten darüber, wie Ajax implementiert wird

Der einfachste Weg, um jQuery zu verwenden, ist .post

ex:

%Vor%

$.post() kann, wie der Name schon sagt, Daten zusammen mit der Anfrage für die Datendatei senden. Wenn diese Anfrage beispielsweise eine PHP-Datei ist, kann die PHP-Datei diese Daten verwenden.

ex:

%Vor%

Die Daten sollten in Schlüssel / Wert-Paaren im JSON-Format vorliegen.

    
The E 13.02.2015 18:12
quelle