Python基于Web的机器人

3
我正在尝试编写一个基于Python的Web Bot,它可以读取和解释HTML页面,然后执行一个onClick函数并接收结果的新HTML页面。我已经能够读取HTML页面,并且可以确定要由onClick命令调用的函数,但我不知道如何执行这些函数或如何接收生成的HTML代码。
有什么想法吗?
7个回答

5
我所知道的 Python 中与 Javascript 相关的唯一工具是 python-spidermonkey。但我从未使用过。
通过 Jython,你可以(滥用)HttpUnit编辑:我忘记了你可以使用 Scrapy。它支持通过 Spidermonkey 运行 Javascript,并且你甚至可以使用 Firefox 来爬取网页。 编辑2:最近,我发现自己越来越多地使用浏览器自动化来完成这些任务,得益于一些优秀的库。QtWebKit提供了对WebKit浏览器的完全访问权限,由于语言绑定(PySidePyQt),可以在Python中使用。对于Gtk+也有类似的库和绑定,但我没有尝试过。Selenium WebDriver API也非常好用,拥有活跃的社区。

因为提到了Scrapy而点赞。之前不知道这个工具,看起来非常有前途。 - hansaplast

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


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

0

显然,Python不会为您解释JS(尽管可能有可以实现此功能的模块)。我想您需要将JS指令转换为Python中等效的转换。

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


0

要执行JavaScript,您需要做很多完整的Web浏览器所做的事情,除了渲染。特别是,您需要一个JavaScript解释器,以及Python解释器。

一个起点可能是python-spidermonkey。根据具体的JavaScript,您可能需要为spidermonkey提供良好的DOM API,以及提供XmlHttpRequest实现。


0

你可以尝试利用V8

V8是谷歌开源的高性能JavaScript引擎。它是用C++编写的,并且被用于谷歌的开源浏览器Chrome中。

如果没有提供DOM框架,从Python调用它可能不太直接。Pyjamas有一个实验项目Pyjamas Desktop,提供V8集成以执行Javascript

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


0

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

如果您可以在Mechanize中为spidermonkey提供通用支持,我相信许多人会非常高兴。;)

Mechanize可能过于复杂,也许您只想找到HTML的特定部分,然后lxml和BeautifulSoup都可以很好地工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接