我正在嘗試編寫一個基於Python的Web機器人,它可以讀取和解釋HTML頁面,然後執行onClick函數並接收生成的新HTML頁面。我已經可以閱讀HTML頁面,並且可以確定由onClick命令調用的函數,但是我不知道如何執行這些函數或如何接收HTML代碼。Python基於Web的機器人
任何想法?
我正在嘗試編寫一個基於Python的Web機器人,它可以讀取和解釋HTML頁面,然後執行onClick函數並接收生成的新HTML頁面。我已經可以閱讀HTML頁面,並且可以確定由onClick命令調用的函數,但是我不知道如何執行這些函數或如何接收HTML代碼。Python基於Web的機器人
任何想法?
Python中唯一用於Javascript的工具,我知道的是python-spidermonkey。我從來沒有使用它。
使用Jython,您可以(ab-)使用HttpUnit。
編輯:忘記了您可以使用Scrapy。它通過Spidermonkey支持Javascript,甚至可以使用Firefox來抓取網頁。
編輯2:最近,我發現自己越來越多地使用瀏覽器自動化來完成這些任務,這要感謝一些優秀的庫。 QtWebKit提供對WebKit瀏覽器的完全訪問權限,可通過語言綁定(PySide或PyQt)在Python中使用。似乎有類似的庫和Gtk +綁定,我還沒有嘗試過。 Selenium WebDriver API也很好,並有一個活躍的社區。
很明顯,python不會爲你解釋JS(儘管可能有模塊在那裏)。我想你需要將JS指令轉換爲Python中的等效轉換。
我想ElementTree或BeautifulSoup是解釋HTML結構的好起點。
要執行JavaScript,除了渲染外,您還需要完成一個完整的Web瀏覽器。特別是,除了Python解釋器之外,您還需要一個JavaScript解釋器。
一個起點可能是python-spidermonkey。根據具體的JavaScript,除了提供XmlHttpRequest實現之外,還可能需要爲spidermonkey提供一個很好的DOM API。
您可以嘗試利用V8,
V8是谷歌的開源,高性能JavaScript引擎。它用C++編寫,並用於Google的開源瀏覽器谷歌瀏覽器。
從Python
調用它可能不簡單,沒有提供DOM的框架。 Pyjamas
有一個實驗項目,Pyjamas Desktop,提供V8
積分爲Javascript
執行。
Pyv8
是一個實驗性的python v8綁定和一個python-javascript編譯器。
對於瀏覽器部分,您可能需要查看Mechanize,它基本上是一個作爲Python庫實現的webbrowser。 http://pypi.python.org/pypi/mechanize/0.1.11 但如前所述,文字n onClick是Javascript,你需要spidermonkey。
如果你能夠在機械化方面爲spidermonkey製作一個通用的支持,我相信很多人會非常高興。 ;)
機械化可能是矯枉過正,也許你只是想找到HTML的特定部分,然後lxml和BeautifulSoup都運作良好。
爲什麼不只是嗅探onclick事件後發送的內容並將其與bot一起復制?
upvoted提到scrapy。沒有意識到這一點。看起來很有希望。 – hansaplast 2012-07-07 19:24:44