我想在google app引擎中使用selenium或windmill来刮掉一个充满JS的网站。我知道风车是用python和javascript编写的。
这可能吗?如果是,如何插入库?
如果没有,你能解释一下原因并提供替代方案吗?
感谢。
我搜索了一点,看到scrapy是纯粹的蟒蛇。
那会有用吗?它处理javascript吗?
答案 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上运行,以运行真正的浏览器进行负载测试/服务器监控。从技术上讲,这与刮擦相同。