2011-09-28 234 views
1

我有一個小的腳本,用於收集URL的HTML。這工作正常,它帶回了HTML。問題是,這個url在頁面加載後呈現一些DIV,所以當我在瀏覽器中打開它時可以看到這些DIV,但是當我使用curl或文件獲取內容時不能看到這些DIV。這將是什麼解決方案?文件獲取內容PHP

+1

沒有簡單的解決方案。據我瞭解,該頁面使用JavaScript呈現附加內容/ ajax /類似的東西爲了讓你獲得那些內容,你需要有效地實現javascript/ajax解析器/引擎。 –

+0

你可以參考一些文檔嗎? – Ismail

+0

我認爲這不可行。類似這樣的事情需要數月和數十個開發人員用C++編寫代碼。 PHP的實現是不合理的。 –

回答

1

不,你沒有可靠的機會來運行JavaScript通過php。但是,您可以在調試器中嗅探Ajax請求,並讓它們獲取它們。你只需要創建自己的解析器

0

這個網址被渲染一些div

這沒有任何語義意義。網址是一些數據的地址 - 可能包含代碼和對其他URL的引用。該網址不會「呈現」任何內容。

如果您的意思是URL引用的頁面呈現div,那會更有意義。

可能是服務器根據請求標頭(例如,用戶代理或cookie)提供不同的內容。或者,從頁面調用的JavaScript可能會將其他內容呈現到HTML中。

要找出哪些,只需在您的瀏覽器中禁用JavaScript。如果div仍然呈現,那麼服務器將基於用戶代理提供不同的內容 - 您只需在請求中僞造用戶代理。

OTOH如果內容是通過JavaScript添加的,那麼使用PHP來實現這一點將是一項艱鉅的任務。

0

你可能會使用一些JavaScript解釋器與下載頁面的可能性。這是可能的在命令行中使用Rhino shell(你可以在PHP通過system()shell_exec()執行此。

看來,雖然你可能很難有時間解析HTML並在頁面飼養犀牛剛剛的JavaScript(我沒有看到任何解析html文件的選項),但確定有其他js解釋器,也許一個適合您的需求:wikipedia page on JS engines