我正在尝试编写一个基于 Python 的 Web Bot,它可以读取和解释 HTML 页面,然后执行 onClick 函数并接收生成的新 HTML 页面。我已经可以阅读 HTML 页面并且可以确定要由 onClick 命令调用的函数,但是我不知道如何执行这些函数或如何接收生成的 HTML 代码。
有任何想法吗?
我知道的用于 Javascript 的 Python 中唯一的工具是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 实现之外,您可能还必须为蜘蛛猴提供良好的 DOM API。
对于浏览器部分,您可能需要查看 Mechanize,它基本上是一个作为 Python 库实现的网络浏览器。http://pypi.python.org/pypi/mechanize/0.1.11 但如前所述,文本 n onClick 是 Javascript,您需要 spidermonkey。
如果你能在机械化中为蜘蛛猴做一个通用的支持,我相信很多人会非常高兴。;)
机械化可能有点矫枉过正,也许您只想找到 HTML 的特定部分,然后 lxml 和 BeautifulSoup 都可以正常工作。
你为什么不直接嗅探 onclick 事件后发送的内容并用你的机器人复制呢?
对于网络自动化,您可以查看“ webbot ”库。它使自动化变得非常简单和无痛。
webbot 甚至适用于具有动态更改 id 和类名的网页,并且具有比 selenium 和 mechanize 更多的方法和功能。
这是webbot的片段
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 ^_^