2009-06-24 58 views
3

我正在嘗試編寫一個基於Python的Web機器人,它可以讀取和解釋HTML頁面,然後執行onClick函數並接收生成的新HTML頁面。我已經可以閱讀HTML頁面,並且可以確定由onClick命令調用的函數,但是我不知道如何執行這些函數或如何接收HTML代碼。Python基於Web的機器人

任何想法?

回答

5

Python中唯一用於Javascript的工具,我知道的是python-spidermonkey。我從來沒有使用它。

使用Jython,您可以(ab-)使用HttpUnit

編輯:忘記了您可以使用Scrapy。它通過Spidermonkey支持Javascript,甚至可以使用Firefox來抓取網頁。

編輯2:最近,我發現自己越來越多地使用瀏覽器自動化來完成這些任務,這要感謝一些優秀的庫。 QtWebKit提供對WebKit瀏覽器的完全訪問權限,可通過語言綁定(PySidePyQt)在Python中使用。似乎有類似的庫和Gtk +綁定,我還沒有嘗試過。 Selenium WebDriver API也很好,並有一個活躍的社區。

+0

upvoted提到scrapy。沒有意識到這一點。看起來很有希望。 – hansaplast 2012-07-07 19:24:44

0

很明顯,python不會爲你解釋JS(儘管可能有模塊在那裏)。我想你需要將JS指令轉換爲Python中的等效轉換。

我想ElementTree或BeautifulSoup是解釋HTML結構的好起點。

0

要執行JavaScript,除了渲染外,您還需要完成一個完整的Web瀏覽器。特別是,除了Python解釋器之外,您還需要一個JavaScript解釋器。

一個起點可能是python-spidermonkey。根據具體的JavaScript,除了提供XmlHttpRequest實現之外,還可能需要爲spidermonkey提供一個很好的DOM API。

0

您可以嘗試利用V8

V8是谷歌的開源,高性能JavaScript引擎。它用C++編寫,並用於Google的開源瀏覽器谷歌瀏覽器。

Python調用它可能不簡單,沒有提供DOM的框架。 Pyjamas有一個實驗項目,Pyjamas Desktop,提供V8積分爲Javascript執行。

Pyv8是一個實驗性的python v8綁定和一個python-javascript編譯器。

0

對於瀏覽器部分,您可能需要查看Mechanize,它基本上是一個作爲Python庫實現的webbrowser。 http://pypi.python.org/pypi/mechanize/0.1.11 但如前所述,文字n onClick是Javascript,你需要spidermonkey。

如果你能夠在機械化方面爲spidermonkey製作一個通用的支持,我相信很多人會非常高興。 ;)

機械化可能是矯枉過正,也許你只是想找到HTML的特定部分,然後lxml和BeautifulSoup都運作良好。

0

爲什麼不只是嗅探onclick事件後發送的內容並將其與bot一起復制?