我正在尝试编写一个基于Python的Web Bot,它可以读取和解释HTML页面,然后执行一个onClick函数并接收结果的新HTML页面。我已经能够读取HTML页面,并且可以确定要由onClick命令调用的函数,但我不知道如何执行这些函数或如何接收生成的HTML代码。
有什么想法吗?
有什么想法吗?
from webbot import Browser
web = Browser()
web.go_to('google.com')
web.click('Sign in')
web.type('mymail@gmail.com' , into='Email')
web.click('NEXT' , tag='span')
web.type('mypassword' , into='Password' , id='passwordFieldId') # specific selection
web.click('NEXT' , tag='span') # you are logged in ^_^
显然,Python不会为您解释JS(尽管可能有可以实现此功能的模块)。我想您需要将JS指令转换为Python中等效的转换。
我认为ElementTree或BeautifulSoup是解释HTML结构的良好起点。
要执行JavaScript,您需要做很多完整的Web浏览器所做的事情,除了渲染。特别是,您需要一个JavaScript解释器,以及Python解释器。
一个起点可能是python-spidermonkey。根据具体的JavaScript,您可能需要为spidermonkey提供良好的DOM API,以及提供XmlHttpRequest实现。
你可以尝试利用V8。
V8是谷歌开源的高性能JavaScript引擎。它是用C++编写的,并且被用于谷歌的开源浏览器Chrome中。
如果没有提供DOM框架,从Python
调用它可能不太直接。Pyjamas
有一个实验项目Pyjamas Desktop,提供V8
集成以执行Javascript
。
Pyv8
是一个实验性的Python v8绑定和Python-Javascript编译器。
对于浏览器部分,您可能需要查看Mechanize,它基本上是作为Python库实现的Web浏览器。http://pypi.python.org/pypi/mechanize/0.1.11 但是如上所述,onClick中的文本是Javascript,您需要spidermonkey。
如果您可以在Mechanize中为spidermonkey提供通用支持,我相信许多人会非常高兴。;)
Mechanize可能过于复杂,也许您只想找到HTML的特定部分,然后lxml和BeautifulSoup都可以很好地工作。