2010-06-13 177 views
2

我正在尋找一種方法來從Python控制瀏覽器,即填寫表單字段並提交它們,可能調用JS函數。我查了一下,但據我所知,PyWebKitGtk只允許您將瀏覽器顯示爲GUI元素,而不是與它接口。從Python控制瀏覽器

有沒有辦法輕鬆做到這一點? 我在Python中編寫了我的程序邏輯,而且我討厭將它移植到JS。 除此之外,即使我使用純JS的「bookmarklets」,那些將無法讀/寫我的本地文件系統,他們會嗎?

此外,頁面上的一些內容是使用AJAX生成的,所以我正在尋找一種解決方案,其中javascript正常運行。

P.S.爲了平息你的懷疑,我並沒有試圖自動填寫論壇賬戶創建表或類似的垃圾郵件,雖然這個任務在技術上是相似的。我需要爲我的研究項目抓取/刮取網站。

編輯:IEC看起來很有前途,但我在Mac上工作。

回答

3

你可以嘗試像Selenium,這是腳本的瀏覽器應用程序通過包括Python在內的各種語言 - 它是用於跨瀏覽器測試的,但可以做你想做的。

+0

借調。使用Selenium IDE,您可以打開瀏覽器,按記錄,然後自行填寫並提交表單。然後,您可以將記錄的會話保存到Python代碼中。只需將硒代碼與您當前的代碼集成起來,您就可能是金牌。 – 2010-06-13 21:36:11

+0

這看起來不錯。它反過來工作。我會從Selenium調用python,但如果這有效,事情應該沒問題。謝謝。編輯:這太棒了!如果那個導出的python腳本能夠工作,它會做_exactly_我​​想要的。 – noio 2010-06-13 21:37:38

1
+0

我沒有模擬瀏覽器,因爲我想AJAX運行正常,模擬所有這些調用會有點乏味。 – noio 2010-06-13 21:27:29

0

您可以實現(在Python)一個WebKit瀏覽器:

import sys 
from PyQt4.QtCore import * 
from PyQt4.QtGui import * 
from PyQt4.QtWebKit import * 
app = QApplication(sys.argv) 
web = QWebView() 
web.load(QUrl("http://google.com")) 
web.show() 
sys.exit(app.exec_()) 

或者選擇使用Crowbar會給你一個API接口的xulrunner的(火狐)。