我正在尝试编写一个基于Python的Web Bot,它可以读取和解释HTML页面,然后执行onClick函数并接收生成的新HTML页面。我已经可以阅读HTML页面,我可以确定onClick命令要调用的函数,但我不知道如何执行这些函数或如何接收生成的HTML代码。
有什么想法吗?
答案 0 :(得分:5)
我知道的Python中唯一的Javascript工具是python-spidermonkey。我从来没用过它。
使用Jython,你可以(ab-)使用HttpUnit。
修改:忘记您可以使用Scrapy。它通过Spidermonkey支持Javascript,甚至可以使用Firefox来抓取网页。
编辑2 :最近,由于一些出色的库,我发现自己越来越多地使用浏览器自动化来完成这些任务。 QtWebKit提供对WebKit浏览器的完全访问权限,由于语言绑定(PySide或PyQt),可以在Python中使用。似乎有类似的Gtk +库和绑定,我还没有尝试过。 Selenium WebDriver API也很有效,并且有一个活跃的社区。 p>
答案 1 :(得分:0)
我认为ElementTree或BeautifulSoup是解释HTML结构的良好起点。
答案 2 :(得分:0)
要执行JavaScript,除了渲染之外,您需要完成整个Web浏览器的功能。特别是,除了Python解释器之外,还需要一个JavaScript解释器。
一个起点可能是python-spidermonkey。根据特定的JavaScript,除了提供XmlHttpRequest实现之外,您可能还必须为spidermonkey提供一个好的DOM API。
答案 3 :(得分:0)
您可以尝试利用V8,
V8是谷歌的开源,高性能JavaScript引擎。它是用C ++编写的,用于Google的开源浏览器谷歌浏览器。
如果没有提供DOM的框架,那么从Python
调用它可能并不简单。
Pyjamas
有一个实验项目Pyjamas Desktop,为V8
执行提供Javascript
集成。
Pyv8
是一个实验性的python v8绑定和一个python-javascript编译器。
答案 4 :(得分:0)
对于浏览器的一部分,您可能需要查看Mechanize,它基本上是一个实现为Python库的webbrowser。 http://pypi.python.org/pypi/mechanize/0.1.11 但如上所述,onClick上的文本是Javascript,你需要spidermonkey。
如果你能在机械化方面为spidermonkey做一个通用支持,我相信很多人会非常高兴。 ;)
机械化可能有点矫枉过正,也许您只是想找到HTML的特定部分,然后lxml和BeautifulSoup都能很好地工作。
答案 5 :(得分:0)
为什么不直接嗅探onclick事件后发送的内容并用机器人复制?
答案 6 :(得分:0)
对于Web自动化,您可以查看“ webbot ”库。它使自闭症变得简单而无痛苦。
webbot甚至适用于具有动态更改的id和classname的网页,并且比硒和机械化具有更多的方法和功能。
这是网络机器人的片段
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 ^_^