无浏览器的导航实用程序,重量轻,防故障

时间:2012-12-14 06:23:35

标签: python selenium scrapy selenium-webdriver phantomjs

我有一个用例,我需要在网站上填写表单,但无法访问API。目前我们正在使用webdriver和浏览器,但它变得非常繁重而且不是万无一失的,因为该过程是异步的。有没有办法可以在没有浏览器的情况下完成它,并通过密切监视待处理的请求来使进程同步?

Casperjs和htmlunitdriver似乎是我拥有的最佳选择。有人可以解释维护,防故障,重量轻的优点或缺点。

我需要浏览复杂和许多不同类型的网页。我想浏览的一些网页是由JS驱动的。

Scrapy可以用于此目的吗?

2 个答案:

答案 0 :(得分:5)

使用 Htmlunitdriver 。为了使其失败证明您必须相应地进行一些更改。但它可以在没有浏览器的情况下工作。

答案 1 :(得分:2)

好吧,我一直在使用很多不同的方法来实现这一点,可靠的是你想要系统的智能/高级程度。我穿红宝石,红宝石很容易做到。下面是我发现最有用的方法(原因很漂亮的红宝石偏见):

  • 机械化found here):超轻,超快,超级可靠。它处理浏览器所做的一切,除了JS。在引擎盖下它是一个开放的uri +一个XML解析器,顶部有一个漂亮的界面层,还有一些额外的香料。查看文档中的教程。我认为它也适用于像python和其他的东西。
  • 恶作剧者found here):快速,真实的浏览器行为,非常可靠,重量轻,支持JS。在引擎盖下它是一个幻影js驱动的水豚浏览器(但没有所有讨厌的依赖,完全无头)。即使它是用于测试的,例如rspec,它很容易以其他方式使用,或者单独使用,只需搜索谷歌。
  • Watir-webdriver found here):一个超级强大的库,用于驱动像Firefox,IE,Chrome或Safari等真正的浏览器。它实际上非常稳定。但是,如果您没有连接真实的物理屏幕(例如,在服务器上),则需要运行xvfb,并将浏览器的输出映射到它。使用无头宝石here
  • 可以很容易地做到这一点

换句话说,如果您不需要JS支持,请使用mechanize。