2008-09-24 108 views
17

是否有任何用JavaScript呈現HTML頁面並獲取DOM對象的python模塊?用於呈現HTML和javascript的Python庫

我想解析一個頁面,它使用javascript生成幾乎所有的內容。

+2

你能否將問題重新定義爲「在Python中模擬瀏覽器DOM」 - 目前的版本並不真正反映這個問題。 – 2008-09-26 23:37:38

回答

8

這裏最大的困難是模擬瀏覽器之外的完整瀏覽器環境。您可以使用Rhino和SpiderMonkey等獨立JavaScript解釋器來運行JavaScript代碼,但它們不提供完整的瀏覽器(如環境)來完整呈現網頁。

如果我需要解決這樣的問題,我會先看看javascript是如何渲染頁面的,它很可能通過AJAX獲取數據並使用它來渲染頁面。然後,我可以使用像simplejson和httplib2這樣的python庫直接讀取數據並使用它,否定訪問DOM對象的需要。但是,這只是一種可能的情況,我不知道你正在解決的具體問題。

其他選項包括Łukasz提到的硒,某種webkit嵌入式的瘋狂,某種IE win32腳本瘋狂,或者最終,基於pyxpcom的解決方案(帶有額外的瘋狂)。所有這些都有一個缺點,就是需要幾乎完全運行的用於python的瀏覽器才能使用,這可能不是一個取決於您的環境的選項。

1

您可以使用python-webkit。需要一個正在運行的glib和GTK,但這可能比包裝沒有glib的webkit的部分更難。

我不知道它是否能滿足您的所有需求,但我想您應該嘗試一下。

+0

我認爲pywebkitgtk只能呈現html頁面。渲染之後可以獲取xml源代碼嗎?沒有足夠的文檔 – cnu 2008-09-24 10:51:31