3

我有一个用例,我需要在网站中填写表格,但无法访问 API。目前我们正在使用 webdriver 和浏览器,但由于过程是异步的,所以它变得非常繁重并且不是万无一失的。有没有什么办法可以在没有浏览器的情况下做到这一点,并通过密切监视待处理的请求来使流程同步?

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

我需要浏览复杂且许多不同类型的网页。我想浏览的一些网页很大程度上是 JS 驱动的。

Scrapy 可以用于此目的吗?

4

2 回答 2

5

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

于 2012-12-14T06:25:27.687 回答
2

好吧,我一直在使用很多不同的方法来做到这一点,这取决于您希望系统有多智能/先进。我在 ruby​​ 上,在 ruby​​ 中这很容易做到。下面是我发现列出的最有用的方法(原因相当红宝石偏见):

  • 机械化在此处找到):超轻、超快速、超可靠。它处理浏览器所做的一切,除了 JS。在引擎盖下,它是一个开放 uri + 一个 XML 解析器,顶部有漂亮的接口层和一些额外的香料。查看文档中的教程。我认为它也适用于 python 等。
  • Poltergeist在此处找到):快速、真实的类似浏览器的行为,非常可靠且重量轻,支持 JS。在底层,它是一个用于 capybara 的 phantom-js 驱动的浏览器(但没有所有讨厌的依赖项,并且完全无头)。即使它是为使用例如 rspec 进行测试而构建的,它也很容易以其他方式使用,或者作为独立的,只需搜索 google。
  • Watir-webdriver在这里找到):一个超级强大的库,用于驱动真正的浏览器,如 firefox、IE、chrome 或 safari。它实际上非常稳定。但是,如果您没有连接真正的物理屏幕(例如在服务器上),您需要运行 xvfb,并将浏览器的输出映射到它。使用这里也提到的无头宝石可以很容易地做到这一点

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

于 2012-12-19T09:16:03.807 回答