3

我正在尝试编写一个基于 Python 的 Web Bot,它可以读取和解释 HTML 页面,然后执行 onClick 函数并接收生成的新 HTML 页面。我已经可以阅读 HTML 页面并且可以确定要由 onClick 命令调用的函数,但是我不知道如何执行这些函数或如何接收生成的 HTML 代码。

有任何想法吗?

4

7 回答 7

5

我知道的用于 Javascript 的 Python 中唯一的工具是python-spidermonkey。我从来没有使用过它。

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

编辑:忘了你可以使用Scrapy。它通过 Spidermonkey 支持 Javascript,你甚至可以使用 Firefox 来爬网。

编辑 2:最近,由于一些优秀的库,我发现自己越来越多地使用浏览器自动化来完成此类任务。QtWebKit提供对 WebKit 浏览器的完全访问权限,由于语言绑定( PySidePyQt),它可以在 Python 中使用。Gtk+ 似乎有类似的库和绑定,我没有尝试过。Selenium WebDriver API也很好用并且有一个活跃的社区。

于 2009-06-24T06:49:31.927 回答
0

很明显python不会为你解释JS(尽管可能有模块可以)。我想您需要将 JS 指令转换为 Python 中的等效转换。

我想 ElementTree 或 BeautifulSoup 将是解释 HTML 结构的良好起点。

于 2009-06-24T06:49:46.683 回答
0

要执行 JavaScript,除了呈现之外,您需要执行完整 Web 浏览器所做的大部分工作。特别是,除了 Python 解释器之外,您还需要一个 JavaScript 解释器。

一个起点可能是python-spidermonkey。根据特定的 JavaScript,除了提供 XmlHttpRequest 实现之外,您可能还必须为蜘蛛猴提供良好的 DOM API。

于 2009-06-24T06:50:07.243 回答
0

您可以尝试利用V8

V8 是 Google 的开源、高性能 JavaScript 引擎。它是用 C++ 编写的,用于 Google 的开源浏览器 Google Chrome。

如果没有提供 DOM 的框架,调用它Python可能并不简单。 Pyjamas有一个实验项目,睡衣桌面,提供执行V8集成Javascript

Pyv8是一个实验性的 python v8 绑定和一个 python-javascript 编译器。

于 2009-06-24T07:05:08.697 回答
0

对于浏览器部分,您可能需要查看 Mechanize,它基本上是一个作为 Python 库实现的网络浏览器。http://pypi.python.org/pypi/mechanize/0.1.11 但如前所述,文本 n onClick 是 Javascript,您需要 spidermonkey。

如果你能在机械化中为蜘蛛猴做一个通用的支持,我相信很多人会非常高兴。;)

机械化可能有点矫枉过正,也许您只想找到 HTML 的特定部分,然后 lxml 和 BeautifulSoup 都可以正常工作。

于 2009-06-24T08:44:28.200 回答
0

你为什么不直接嗅探 onclick 事件后发送的内容并用你的机器人复制呢?

于 2011-05-03T18:29:05.213 回答
0

对于网络自动化,您可以查看“ 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 ^_^

文档位于:https ://webbot.readthedocs.io

于 2018-07-20T06:26:49.173 回答