1

我想在谷歌应用引擎中使用 selenium 或 windmill 来抓取一个 JS 填充的网站。我知道风车是用 python 和 javascript 编写的。

这可能吗?如果是,如何插入库?
如果不是,您能否解释原因并提供替代方案?

谢谢。

更新

我搜索了一下,发现scrapy是纯python。
那会奏效吗?它处理javascript吗?

4

3 回答 3

3

任何 python“抓取”库都不太可能在 appengine 上为您解释 javascript,因为它可能需要某种 C 扩展(如绑定到 spidermonkey 或 v8),这将违反 GAE 沙盒。

但是,如果您要冒险涉足 Java 方面,您可能会有更多的运气。我知道你可以让Rhino 在 AppEngine 上运行,在env.js的帮助下你可以模拟 DOM,一个快速的谷歌显示了一堆 Java 的抓取工具。这只是将它们捆绑在一起的问题。

HtmlUnit看起来它试图做到这一点,但目前尚不清楚它是否对 appengine 友好,因为它似乎是线程化的。

于 2011-05-08T23:34:29.170 回答
1

我相信 Selenium 和 Windmill 都只允许你控制一个浏览器,而不是模拟一个。他们希望在桌面环境中运行并驱动真正的浏览器,而这是 App Engine 无法做到的。

您可以使用URL Fetch API和 HTML 解析器(如BeautifulSoup)来处理来自 App Engine 的页面抓取。

于 2011-05-08T22:23:52.910 回答
1

Selenium 和 windmill(现在认为是无人维护的)都是真正浏览器的控制器。通常它们会生成一个真正的浏览器(例如 Firefox)作为子进程并对其进行控制。我不认为你可以在 AppEngine 中做到这一点。我所知道的最接近纯代码浏览器的是htmlunit,那就是 Java。据我所知,Python 没有等价物。

于 2011-05-08T22:24:45.190 回答