目前,由于其使用案例的数量,在企业中采用Web抓取的方式已大大增加。您可能需要抓取旅行网站的飞行时间或Airbnb列表,或者您可能想收集数据(例如来自不同电子商务网站的价格表)以进行价格比较。也许您需要收集机器学习的培训和测试数据集。这就是网络抓取发挥作用的地方。
在这里,我们将探索最好的网络抓取工具。
Puppeteer
Puppeteer不仅仅是Web抓取工具。它是一个Node.js库,可让您使用高级API控制Chrome / Chromium浏览器。Puppeteer 默认情况下无头运行 ,但可以将其配置为运行完整的无头Chrome或Chromium。
使用Puppeteer,您可以执行以下操作:
- 生成网页的屏幕截图和PDF。
- 创建最新的自动化测试环境。
- 捕获网站的时间线跟踪以诊断性能问题。
- 搜寻SPA(单页应用程序)并生成预渲染的内容(服务器端渲染(SSR))。
Cheerio
Cheerio是一个解析标记的库。它提供了用于处理结果数据结构的API。关于Cheerio最好的事情是它不像Web浏览器那样解释结果。但是,它不会产生视觉效果,也不会加载外部资源或应用CSS。因此,如果您的用例需要它们,则需要考虑使用PhantomJS之类的项目 。
值得一提的是,在Cheerio中,使用Node.js抓取网站要容易得多。像沃尔玛这样的公司都使用Cheerio托管其移动网站的服务器渲染。
Request-Promise
Request-Promise是npm实际库的变体。它通过自动浏览器提供了更快的解决方案。当内容不是动态呈现时,可以使用此Web抓取工具。如果要处理具有身份验证系统的网站,它可能是更高级的解决方案。如果我们将其与Puppeteer进行比较,则在使用方面恰恰相反。
Nightmare
Nightmare是一个高级浏览器自动化库,可将电子 作为浏览器运行 。它是精简版,或者可以说是Puppeteer的简化版。它具有可提供更大灵活性的插件,包括对文件下载的支持。
Osmosis
Osmosis是HTML / XML解析器和Web抓取工具。它用Node.js编写,并带有CSS3 / xpath选择器和轻量级HTTP包装器。如果将其与Cheerio,jQuery和jsdom进行比较 ,则它没有明显的依赖性。
总结
除了这些Web抓取工具之外,您还可以使用许多其他工具和资源。这完全取决于您的项目要求。但是,某些网站不允许抓取,因此在尝试抓取任何网站之前,请确保您做得很好。