在Google App Engine上模拟浏览器

时间:2011-05-08 21:08:27

标签: python google-app-engine selenium scrapy windmill

我想在google app引擎中使用selenium或windmill来刮掉一个充满JS的网站。我知道风车是用python和javascript编写的。

这可能吗?如果是,如何插入库?
如果没有,你能解释一下原因并提供替代方案吗?

感谢。

更新

我搜索了一点,看到scrapy是纯粹的蟒蛇。
那会有用吗?它处理javascript吗?

4 个答案:

答案 0 :(得分:3)

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

但是,如果你冒险去Java方面,你可能会有更多的运气。我知道你可以Rhino running on AppEngine获得env.js的一点帮助,你可以模仿DOM,快速谷歌显示bunch of scraping tools for Java。这只是将它们捆绑在一起的问题。

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

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

答案 3 :(得分:0)

您可以使用EC2代替App引擎。 Browsermob和AlertFox在EC2上运行,以运行真正的浏览器进行负载测试/服务器监控。从技术上讲,这与刮擦相同。