【发布时间】:2010-12-27 08:47:14
【问题描述】:
我想截取一个使用 JavaScript 的网站。
有mechanize,用于 Python 的程序化网络浏览器。但是,它(可以理解)不解释 javascript。是否有任何适用于 Python 的编程浏览器?如果没有,我可以使用 Python 中的任何 JavaScript 实现来尝试创建一个吗?
【问题讨论】:
标签: javascript python browser screen-scraping mechanize
我想截取一个使用 JavaScript 的网站。
有mechanize,用于 Python 的程序化网络浏览器。但是,它(可以理解)不解释 javascript。是否有任何适用于 Python 的编程浏览器?如果没有,我可以使用 Python 中的任何 JavaScript 实现来尝试创建一个吗?
【问题讨论】:
标签: javascript python browser screen-scraping mechanize
我最喜欢的是PyPhantomJS。它是使用 Python 和 PyQt4 编写的。它完全无头,您可以完全通过 JavaScript 控制它。
但是,如果您希望实际查看该页面,您也可以使用 PyQt4 中的QWebView。
【讨论】:
还有 spynner“基于 QtWebkit 框架的具有 Javascript/AJAX 支持的 Python 有状态的编程 Web 浏览器模块”:http://code.google.com/p/spynner/
【讨论】:
【讨论】:
我建议您查看http://wiki.python.org/moin/WebBrowserProgramming 上提供给您的一些选项 - 令人惊讶的是,这是一个常见问题(我今天在 stackoverflow 上找到了三个,通过搜索“python 浏览器” “在谷歌上)。如果你这样做,你会发现我给出的其他答案。
【讨论】:
PyV8 包很好地包装了 Python 的 Google's V8 Javascript engine。这特别好,因为您不仅可以从 Python 调用到 Javascript 代码,而且可以从 Javascript 回调到 Python 代码。这使得实现通常的浏览器提供的对象(即 Javascript 全局命名空间中的所有对象:“window”、“document”等)变得非常简单,如果您要制作这些对象,则需要这样做一个支持 Javascript 的 Python 浏览器模拟器,可能通过 mechanize 连接起来。
【讨论】:
您还可以尝试在相关页面上定义Chickenfoot 页面触发器,在页面上执行您想要的任何操作并将操作结果保存到本地文件,并从程序内的命令行调用 Firefox,然后读取文件。
【讨论】:
您最好使用Selenium 之类的工具通过网络浏览器自动进行抓取,这样 JS 就会像真实用户一样执行和呈现页面。
【讨论】: