Nicht-browser-emulation von JavaScript - ist es möglich?
Habe ich ein neues Projekt an dem ich arbeite, umfasst das abrufen einer Webseite (mit PHP und cURL) Parsen des HTML-und javascript aus und dann die Handhabung der Daten in den Ergebnissen.
Grundsätzlich habe ich gegen eine Wand geprallt, als die Website verwendet javascript zum abrufen Ihrer Daten per AJAX. In diesem Fall werden die ersten Daten erscheinen nicht in der abgerufenen Seite, es sei denn, die javascript in einem browser laufen.
Gibt es PHP-Bibliotheken für diese? (Ich vermute nicht, aber ich könnte falsch sein.)
Ich würde wirklich eher zu bauen, als eine server-basierte Lösung, sonst bin ich gezwungen zu haben, um eine Anwendung zu erstellen, die für diese und mit mozilla und/oder IE-runtime-Bibliotheken, welche Art von Niederlagen der Zweck.
- Update zum Projekt: Mein server ist eine LAMPE der Maschine. Mein test-server ist xampp auf meinem laptop, das ist ein Spiegel, der. Dies muss in der SERVER-BASIERT browser-basiert. Also mit JAVA oder JavaScript im browser ist keine option. (jQuery scheint auch zu arbeiten browser-basiert.) In anderen Worten, ein cronjob wäre, rufen Sie die PHP-Datei, die wiederum würde cURL eine Webseite. Die Webseite würde analysiert werden, für die HTML-und javascript würde interpretiert werden müssen, in ein DOM-Modell. Rhino sieht vielversprechend aus, aber JAVA ist nicht Teil der shell bauen auf dem server. V8/SquirrelFish ist C++ code, den ich brauchen würde, zu konvertieren, zu PHP.
- don ' T Kommentar auf Ihre Antwort, nur Bearbeiten
- Update x2: Es ist eine Lösung mit .NET und IE in einer root-shell. Ich persönlich gewonnen ' T touch this mit einem zehn-Fuß-pol!!! Es gibt mir ein Kopfschmerz zu stellen Sie sich all die wahnsinnigen Kopfschmerzen, die mit javascript gerendert für M$ und den rest der bekannten Welt mit alles STANDARD. Natürlich dieser verwendet einen dedizierten host. Dies ist natürlich NICHT web-basiert. Und ja, Sie Fragen sich jetzt vielleicht, wie könnte man dies mit IIS statt WAMP?>>>>>> <<<das verdient einen Schrei des Cthulhu ##################---##-#-###!!>
Du musst angemeldet sein, um einen Kommentar abzugeben.
Benötigen Sie:
Sobald Sie sich versammelt haben, Ihre Komponenten (denken Sie daran, ein Erwachsener zu helfen, Sie mit dem sandboxing), finden Sie, was Sie haben, ist im wesentlichen nicht zu unterscheidend von einem web-browser.
Portierung einer JS-engine für PHP wäre eine riesige Aufgabe, und die daraus resultierende Leistung wahrscheinlich schrecklich. Sie können sich gar nicht wirklich Weg mit einer fast-Lösung auf JavaScript nicht mehr, da so viele Seiten sind mit furchtbar komplexen Bibliotheken wie jQuery, alles zu tun, die verlangen, dass in-depth-JS-Unterstützung.
Ich glaube nicht, dass du gehst, um dies tun zu können, die rein in PHP. Sie haben, um hook up Java/Rhino/HTMLUnit oder eine richtige web-browser wie Mozilla. Wenn Ihr hosting-Umgebung nicht geben Ihnen die Flexibilität, die Sie brauchen, um zu kompilieren und bereitstellen, die Art von Sache, die Sie haben würden, zu verschieben, um eine bessere hosting-setup mit shell - (vorzugsweise VPS).
Wenn Sie können, vermeiden Sie diese Unannehmlichkeiten auf eine andere Weise, durch Besondere-Gehäuse bekannten Seiten' AJAX zugreifen, tun.
Du musst gehen einen Schritt weiter als die Rhino wenn Sie ausführen wollen echte live-web-Seiten, da der JavaScript auf diesen Seiten erwarten Sie, um in der Lage sein, Objekte verwenden, die native browser-Umgebung. Eine server-side-JavaScript-engine wie Rhino nicht die Objekte.
John Resig (Schöpfer von jQuery) startete ein Projekt namens Env.js vor ein paar Jahren; es könnte sein, was Sie suchen, für, aber ich vermute, Sie haben eine harte Zeit immer konsistente Ergebnisse aus einer Vielzahl von web-Seiten. Hier sein Erster blog-post darüber:
http://ejohn.org/blog/bringing-the-browser-to-the-server/
Einige ähnliche Projekte sind benannt, die post ' s Kommentare.
Können Sie ausführen einer JavaScript-engine wie Rhino, die auf einem server.
Hier ein paar alternativen:
Während diese ausgeführt werden können JS, ich bin mir nicht sicher, ob das, was Sie tun, ist der beste Ansatz. Da du jedoch noch nicht angegeben, die purprose von deinem Programm kann ich nicht bieten Anregungen mit dieser Hinsicht.
Vorher hier gefragt: headless internet-browser?
Bei Mozilla, die wir bekommen diese Frage eine Menge. Es ist keine gute Antwort. Was Sie wollen, ist eine software-Bibliothek, die so ziemlich alles, was ein browser tun muss (zumindest so weit wie networking -, JavaScript -, HTML-parsing und DOM), aber ohne display.
Die nächste Sache, die ich kenne, ist HTMLUnit (in Java).
Ich weiß, Sie haben gesagt, kein Java, aber für die Referenz, die Sie interessieren könnten QT Jaambi. Sie haben eine Implementierung von webkit, die yo ucan laufen in headless-Modus.
Alle diese Antworten scheinen zu vermuten, dass es keine Möglichkeit gibt, php-JavaScript-emulation, aber es ist ein fast voll-kompatible open-source-php-JavaScript-emulator hier:
http://www.sitepoint.com/blogs/2006/01/19/j4p5-javascript-for-php5/
Kombiniert mit Env.js man konnte ziemlich nah an einem vollen server-side js-execution-Lösung.
konnte man einen Blick in rhino. Sie verwenden java, habe noch nie eine PHP-port.
Sind Sie verpflichtet, ausführen, den javascript?
Tbh werden Sie haben eine härtere Zeit, die nur mit einem JS-engine, wie Sie auch die Umwelt schaffen oder eine browser-scripting-engine wie die DOM-und window-Objekte. Wenn Sie auf einem Windows-server, dann könnte man sich ziemlich einfach verwenden die IE-COM-Objekte zu laden und führen Sie die web-Seite, der Zugriff auf den DOM-ein Programm und ziehen Sie den Inhalt wieder aus. Für Ihre server, Linux und/oder Mozilla hab ich leider keine Erfahrung.
Aber wirklich, was wollen Sie tun?