无头浏览器和爬虫 - 解决方案

378

我试图列出一些浏览器自动化测试套件和能够进行抓取的无头浏览器平台的可能解决方案列表。


浏览器测试/抓取:

  • Selenium - 跨语言 浏览器自动化的旗舰产品,提供多个编程语言绑定,如Python、Ruby、JavaScript、C#、Haskell等。Firefox的IDE(作为扩展程序)可以更快地部署测试。可以充当服务器并具有大量功能。

JAVASCRIPT

  • PhantomJS - JavaScript 无头测试,可以进行屏幕捕捉和自动化,使用Webkit引擎。从版本1.8开始,实现了Selenium的WebDriver API,因此您可以使用任何WebDriver绑定,并且测试将与Selenium兼容
  • SlimerJS - 类似于PhantomJS,使用Gecko(Firefox)而不是WebKit
  • CasperJS - JavaScript,基于PhantomJS和SlimerJS构建,具有额外功能
  • Ghost Driver - PhantomJSJavaScript实现WebDriver Wire协议。
  • PhantomCSS - CSS回归测试。CasperJS模块用于使用PhantomJS和Resemble.js自动化视觉回归测试。
  • WebdriverCSS - 用于自动化视觉回归测试的Webdriver.io插件
  • PhantomFlow - 描述并通过测试可视化用户流。 Web用户界面测试的实验性方法。
  • trifleJS - 将PhantomJS API移植为使用Internet Explorer引擎。
  • CasperJS IDE (商业版)

NODE.JS

  • Node-phantom - 连接 PhantomJSnode.js 的桥梁
  • WebDriverJs - Selenium 团队为 node.js 提供的 WebDriver 绑定
  • WD.js - 用于 WebDriver/Selenium 2 的 node.js 模块
  • yiewd - 使用最新的 Harmony 生成器的 WD.js 包装器!通过 yield 摆脱回调金字塔
  • ZombieJs - 使用 node.js 的极快速、无头全栈测试
  • NightwatchJs - 基于 Node JS 的测试解决方案,使用 Selenium Webdriver
  • Chimera - Chimera:可以做到 PhantomJS 所做的一切,但在完全的 JS 环境中
  • Dalek.js - 通过 Selenium Webdriver 自动化跨浏览器测试的 JavaScript
  • Webdriver.io - 拥有预定义的 50 多个操作的更好的 WebDriver 绑定实现
  • Nightmare - 具有高级 API 的 Electron 桥梁。
  • jsdom - 专为 Web 抓取而设计。在 Node.js 中实现的非常轻量级的 DOM,支持带有 JavaScript 的页面。
  • new Puppeteer - 提供控制 Chrome 或 Chromium 的高级 API 的 Node 库。默认情况下,Puppeteer 以无头方式运行。

WEB SCRAPING / MINING

  • Scrapy - 基于Python的网页爬虫框架,速度快、文档齐全,可以与Django Dynamic Scraper集成实现规模化数据挖掘,或使用Scrapy Cloud进行PaaS(无服务器)部署,在终端或一个独立进程中运行,可与CeleryTwisted集成使用
  • Snailer - Node.js模块,未经测试
  • Node-Crawler - Node.js模块,未经测试

在线工具

Android自动化工具


相关链接和资源

问题:

  • 有没有纯Node.js解决方案或Nodejs到PhanthomJS/CasperJS模块,实际可用且有文档支持?

答案:Chimera似乎往这个方向发展,可以查看Chimera

  • 除了Selenium之外,还有哪些能够更轻松地进行JavaScript注入的解决方案?

  • 你知道任何纯ruby解决方案吗?

答案:请查看rjk创建的基于ruby的解决方案列表

  • 你知道任何相关技术或解决方案吗?

欢迎编辑此问题并根据您的意愿添加内容!感谢您的贡献!


1
不知道这是否符合您的要求,但我喜欢使用这个模块来爬取网页、检查DOM等:https://npmjs.org/package/crawler。它使用jsdom,并且您可以使用jQuery作为选择器引擎。这个(使用crawler)看起来也很有趣:https://npmjs.org/package/snailer。 - hereandnow78
1
我相信你已经知道GhostDriver是Selenium-Webdriver的一个实现,它使用phantomJS。 - Robbie Wareham
2
你可能会发现这个链接很有帮助:http://blog.screen-scraper.com/2010/06/28/comparison-of-web-scraping-software/ - todd
1
用于可视化抓取和比较的工具:PhantomCSS 和 PhantomFlow。 - FelipeAls
Webdriver.io 还有一个名为 WebdriverCSS 的 CSS 回归插件,用于视觉抓取和比较。 - ChristianB
显示剩余7条评论
3个回答

36

Watir比上述库容易一千倍。 - Pavan Katepalli
对于Python来说,“webbot”库提供了丰富的功能,使得网页自动化变得容易。 - Natesh bhat

11

虽然这个链接可能回答了问题,但最好在此处包含答案的基本部分并提供参考链接。如果链接页面更改,仅有链接的答案可能会失效。 - Sathish
5
听起来通常不错,但这个问题本身就是资源的集合。一个包含简短描述的链接可以被加入到列表中,符合格式并且很有意义。 - Federico Galassi

7

一种基于JS的Selenium是Dalek.js。它不仅适用于自动化前端测试,还可以使用它进行截屏。它具有所有重要浏览器的Web驱动程序。不幸的是,这些Web驱动程序似乎值得改进(只是不想对Firefox说“有Bug”)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接