Python基于Web的Bot

时间:2009-06-24 06:16:00

标签: python html bots

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

有什么想法吗?

7 个答案:

答案 0 :(得分:5)

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

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

修改:忘记您可以使用Scrapy。它通过Spidermonkey支持Javascript,甚至可以使用Firefox来抓取网页。

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

答案 1 :(得分:0)

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

我认为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 ^_^

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