基于网络的Python机器人

3 投票
7 回答
6330 浏览
提问于 2025-04-15 12:28

我正在尝试写一个基于Python的网络机器人,这个机器人可以读取和理解一个HTML页面,然后执行一个点击事件(onClick),并获取执行后生成的新HTML页面。我已经可以读取HTML页面,也能确定点击命令需要调用哪些函数,但我不知道怎么去执行这些函数,或者怎么获取执行后的HTML代码。

有没有什么建议?

7 个回答

0

你可以尝试使用V8

V8是谷歌开发的一个开源、高性能的JavaScript引擎。它是用C++写的,主要用于谷歌的开源浏览器——谷歌浏览器(Chrome)。

如果想从Python中调用它,可能会有点复杂,因为需要一个框架来提供DOM(文档对象模型)。Pyjamas有一个实验性项目,叫做Pyjamas Desktop,它提供了V8JavaScript执行的集成。

Pyv8是一个实验性的Python与V8的绑定库,还有一个Python到JavaScript的编译器。

0

显然,Python不会帮你理解JavaScript(不过可能有一些模块可以做到这一点)。我想你需要把JavaScript的指令转换成Python能理解的相应操作。

我觉得ElementTree或者BeautifulSoup是理解HTML结构的不错起点。

5

我知道的在Python中可以用来处理JavaScript的工具就是python-spidermonkey,不过我自己从来没用过。

如果用Jython的话,你可以(滥用)HttpUnit

编辑:我忘了提到你还可以用Scrapy。它通过Spidermonkey支持JavaScript,甚至可以用Firefox来抓取网页。

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

撰写回答