Selenium 的任何 Python 替代品,用于以编程方式登录需要 JavaScript 登录的网站?

Posted

技术标签:

【中文标题】Selenium 的任何 Python 替代品,用于以编程方式登录需要 JavaScript 登录的网站?【英文标题】:Any Python alternatives to Selenium for programmatically logging into websites that require JavaScript for login? 【发布时间】:2011-01-08 18:57:11 【问题描述】:

我正在编写一个小型私人应用程序,每天自动登录我的网上银行,并下载最新交易。我把它写成一个 Django 应用程序,所以我在 Python 中工作。

如果没有 javascript,我的网上银行似乎无法运行——我认为它使用 JavaScript 来分配某种会话 ID。通过httplib 获取登录页面会给我一个页面,告诉我需要 JavaScript。

所以,我现在正在寻找能够获取网页、在其上执行 JavaScript 的库。几乎是无头浏览器。

我现在在摆弄Selenium。我认为它会完成这项工作,尽管它是为测试网络应用程序而设计的,所以我想知道是否有任何具有类似功能的东西被设计用于比测试更通用的目的。

Selenium 的任何 Python 替代品可用于此类事情?

【问题讨论】:

【参考方案1】:

因为你使用 selenium,我想你已经安装了 firefox。如果是这样,请获取诸如 firebug 或篡改数据之类的扩展,并查看 javascript 代码在登录时会执行哪些 http 请求。

如果您有所需的 url 和参数,您可以轻松地使用 httplib 或 urllib2 编写 python 客户端。

在 firebug 中,您可以在“NET”下找到请求的 url。篡改数据将是自我描述的。 ;-)

【讨论】:

这确实是我最终要做的——在这种情况下,JavaScript 并没有做任何复杂的事情。也就是说,经过一个周末的屏幕抓取,我真的希望他们不要升级网站前端,至少不提供 API。【参考方案2】:

您可以使用Pywebkitgtk。有一个nice tutorial here。

或者,您可以使用Beautiful Soup 来获取页面内容,并使用python-spidermonkey 之类的东西来运行脚本。

【讨论】:

【参考方案3】:

我认为Twill:一种用于 Web 浏览的简单脚本语言非常适合您的问题。

另一个要检查的是Windmill(一种 Selenium,但都是用 Python 编写的)。

【讨论】:

【参考方案4】:

您也可以使用Spynner,它允许程序化网页浏览。

【讨论】:

Lol @webaholik,当我最初发布此内容时,我什至不确定 Github 是否存在。感谢您编辑链接【参考方案5】:

看起来QtWebKit 是另一种选择。

【讨论】:

【参考方案6】:

由于 BeautifulSoup 不再被积极开发,我会推荐 lxml,因为它可以做 BeautifulSoup 可以做的所有事情,而且还有很多。

【讨论】:

Beautiful 似乎正在积极开发中code.launchpad.net/beautifulsoup BeautifulSoup 更像是一个网页解析器而不是自动化器

以上是关于Selenium 的任何 Python 替代品,用于以编程方式登录需要 JavaScript 登录的网站?的主要内容,如果未能解决你的问题,请参考以下文章

使用 selenium 和 python 检查是不是存在任何警报

python+selenium怎么定位页面弹窗的元素

Python - PyPDF2错过了大量的文本。 Windows上的任何替代方案?

Selenium 都有哪些替代品?

Python中的Selenium找不到任何元素

Selenium2+python自动化46-js解决click失效问题