2013-01-31 10 views
6

PHP'de sayfaları cURL ile getiriyorum. Her şey iyi çalışıyor, ancak sayfanın yüklenmesinden sonra JavaScript ile hesaplanan sayfanın bazı bölümlerini bir kısmını alıyorum. cURL, JavaScript hesaplamaları yapılmadan önce sayfanın kaynağını PHP betiğime geri gönderir ve sonuçta yanlış sonuçlara neden olur. Sitedeki hesaplamalar AJAX tarafından getirildi, bu yüzden bu hesaplamayı kolay bir şekilde çoğalayamıyorum. Ayrıca, hedef sayfanın koduna erişimim yok, bu yüzden (cURL) getirme gereksinimlerine uyacak şekilde bu hedef sayfayı ayarlayamıyorum.CURL, sayfanın dinamik güncellemeleri tamamlanana kadar beklemenin bir yolu var mı?

Tüm dinamik trafik bitene kadar beklemek için cURL'ye söyleyebileceğim bir yol var mı? Verileri, uzun askıda kalmalarla sonuçlanabilecek başka bir alana geri göndermeye devam eden bazı JavaScripts'lar nedeniyle zor olabilir. Ama en azından en azından doğru sonuçları geri alırsam test edebilirim.

Geliştirici araç çubuğum Safari'de sayfanın yaklaşık 1.57s içinde yapıldığı gösterir. Belki de CURL'e 2 saniye beklemek için statik olarak söyleyebilirim?

Ben olasılıklar :)

cevap

4

cURL herhangi bir JavaScript çalıştırmak veya belgede başvurulan tüm dosyaları indirmez ne acaba. Yani cURL senin problemin çözümü değil.

Sunucu tarafında bir tarayıcı kullanmanız, sayfayı yüklemesini, X saniye beklemesini ve sonra HTML'yi vermesini istemeniz gerekir.

Bakın: http://phantomjs.org/ (node.js'yi kullanmanız gerekecek, herhangi bir PHP çözümünün farkında değilim).

+0

Neyse ki bu sadece küçük bir kod parçası. Kodu JavaScript'te yeniden yazacağım ve verileri jQuery ve PhantomJS ile getireceğim. Teşekkür ederim :) –

+0

Benim jQuery yaptığım yerel HTML sayfamda sadece PhantomJS dahil etmek için herhangi bir yolu var mı? –

+0

Hayır. Phantom.js, istemcide yapamayacağınız dahili bir webkit tarayıcısı kullanır. –

2

Aldığınız sayfa veya dahil etmek istediğiniz hesaplar hakkında pek bir şey bilmemekle birlikte, cURL'yi doğrudan bu ajax isteklerine hizmet eden URL'ye yönlendirmek için bir seçenek olabilir. Hedef sayfanızda yapılan Ajax çağrılarını incelemek için Firebug gibi bir şey kullanın ve URL'yi ve iletilen tüm parametreleri anlayabilirsiniz. Eğer tam bir web sayfasına ihtiyacınız varsa, hem web sayfasını hem de Ajax URL'sini cURL yapabilir ve ikisini PHP kodunuzda birleştirebilirsiniz, ancak daha sonra dağınık olmaya başlar.

+0

Başka bir program kullanmak yerine, gitmenin yolu budur. –

İlgili konular