17

我有兴趣为我经常访问的网站以某些形式自动输入重复数据。到目前为止,我所查找的能够以无头方式为此提供支持的工具可能是 Selenium WebDriver 和 Mechanize。

我的问题是,使用一次与另一次是否存在根本的技术差异?Selenium 主要用于测试。我还注意到有些人用它来做我正在寻找的事情,那就是自动化数据输入。在这种情况下,测试成为第二个好处。

是否有理由不使用 Selenium 来完成我想通过 Mechanize 做的事情?没关系,这两种工具都可以使用吗?

我不是在问哪个更好,我在问哪个是适合这项工作的工具。也许我不理解每个工具的目的背后的前提。

4

1 回答 1

48

这些是完全不同的工具,在网络抓取、网络自动化、自动化数据提取范围内有些“交叉”。

mechanize是一个成熟且广泛使用的程序化网络浏览工具,具有许多内置功能,如 cookie 处理、浏览器历史记录、表单提交。这里要理解的关键是它mechanize.Browser不是真正的浏览器,它不能执行和理解 javascript,它不能发送通常需要形成网页的异步请求。

这就是selenium发挥作用的地方 - 它是一种浏览器自动化工具,也广泛用于网络抓取。selenium通常成为“后备”工具 - 当某人无法使用mechanizeorRoboBrowserMechanicalSoup(注意 - 另一种选择)对网站进行网络抓取时,例如,它是 javascript “沉重”,选择通常是selenium. selenium您还可以使用无头、自动化PhantomJS浏览器或拥有虚拟显示器。作为一个经常提到的缺点,性能经常被提及——当selenium您作为 Web 浏览器中的真实用户使用目标站点时,它正在加载形成页面所需的额外文件、发出 XHR 请求、呈现等。

这本身并不意味着你应该selenium到处使用——明智地选择工具,选择它是因为它更适合问题,而不是因为你更熟悉一种工具


另请注意,您应该首先考虑使用 API(如果由目标网站提供)而不是进行网络抓取。而且,如果涉及到它,请成为一名优秀的网络抓取公民:

于 2015-07-21T05:02:45.370 回答