【问题标题】:Controlling a browser from Python从 Python 控制浏览器
【发布时间】:2011-03-03 07:31:57
【问题描述】:

我正在寻找一种从 Python 控制浏览器的方法,即填写表单字段并提交它们,可能调用 JS 函数。我环顾四周,但据我所知,PyWebKitGtk 只允许您将浏览器显示为 GUI 元素,而不是与其交互。

有没有办法轻松做到这一点? 我用 Python 编写了我的程序逻辑,我不想将它移植到 JS。 除此之外,即使我使用纯 JS“书签”,它们也无法读取/写入我的本地文件系统,不是吗?

另外,页面上的一些内容是使用 AJAX 生成的,所以我正在寻找一个 javascript 正常运行的解决方案。

附:为了消除您的怀疑,我不会尝试自动填写论坛帐户创建表格或类似的垃圾邮件,尽管任务在技术上是相似的。我需要为我的研究项目抓取/抓取网站。

编辑:IEC 看起来很有希望,但我正在使用 Mac。

【问题讨论】:

    标签: javascript python browser macros webkit


    【解决方案1】:

    您可以尝试Selenium 之类的东西,这是一个通过包括 Python 在内的各种语言编写浏览器脚本的应用程序 - 它用于跨浏览器测试,但可能会做您想做的事情。

    【讨论】:

    • 第二。使用 Selenium IDE,您将打开浏览器,按记录,然后自己填写并提交表单。然后,您可以将录制的会话保存到 python 代码中。只需将 selenium 代码与您当前的代码集成,您可能会很成功。
    • 这看起来不错。它反过来工作。我会从 Selenium 调用 python,但如果可行,那应该没问题。谢谢你。编辑:这太棒了!如果导出的 python 脚本有效,它会完全做我想要的。
    【解决方案2】:

    【讨论】:

    • 我没有模拟浏览器,因为我希望 AJAX 正常运行,模拟所有这些调用会有点乏味。
    【解决方案3】:

    您可以实现一个 Webkit 浏览器(在 Python 中):

    import sys
    from PyQt4.QtCore import *
    from PyQt4.QtGui import *
    from PyQt4.QtWebKit import *
    app = QApplication(sys.argv)
    web = QWebView()
    web.load(QUrl("http://google.com"))
    web.show()
    sys.exit(app.exec_())
    

    或者使用Crowbar,它将为您提供一个用于 xulrunner (Firefox) 的 API 接口。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-23
      • 2011-05-28
      • 1970-01-01
      • 2014-05-12
      • 2011-02-09
      • 2014-09-22
      • 2011-07-17
      • 2018-01-31
      相关资源
      最近更新 更多