推荐5个目前最好的网页数据采集神器
优采云 发布时间: 2020-08-03 15:02在互联网+数据+人工智能时代,仍然有越来越多的网页数据采集需求,且案例诸多,网页数据采集在企业中落地的实际应用也在不断地明显降低。实际工作中可能须要为一个旅游网站获取班机时间或Airbnb列表,或者可能须要搜集数据,例如来自不同电子商务网站的价格表,以便进行价钱比较。很多时侯也会出于个人须要,比如为机器学习搜集训练和测试数据集等。这就是web网页数据采集发挥作用的地方。
在这里,我们将阐述最好的网页数据采集工具。
1. Puppeteer
Puppeteer是Google放出的“终极”大招,它不只是一个网页数据采集工具,实际上是一个Node库,它提供了一个高阶API完整的采集神器,类似于Selenium Webdriver的高级别API,默认是通过DevTools协议控制无界面Chrome,还可以通过配置用于有界面Chrome。
使用Puppeteer,我们可以做以下事情:
# 用来生成网页截图或PDF文件。
# 用来创建全新的自动化测试环境。
# 用来捕捉网页的时间线轨迹以确诊性能问题。
# 抓取一个SPA(单页应用程序)并生成网页渲染之前的内容(服务器端渲染(SSR))。
API象自然语言一样简练明了,没有callback,几行代码能够搞定我们所需的一切。
2. Cheerio
Cheerio是一个标记解析库,提供了对结果数据(比如服务端插口返回的数据)结构进行解析的API,Cheerio最好的一点是它不象web浏览器那样解释结果数据。然而,它既不形成视觉呈现、也不加载外部资源或恳求CSS。如果实际项目中须要里面这种能力的话,就须要考虑类似PhantomJS这样的项目。
值得注意的是,用Node.js采集数据在Cheerio中要容易得多。
比如采集:
3.Request - Promise
Request-Promise是npm库中的一个变体,它通过自动化的浏览器提供了一个更快的解决方案。当内容不是动态呈现时,可以使用此网页数据采集工具。如果要处理的网站有一个认证系统,它可以是一个更先进的解决方案。如果我们把它和Puppeteer相比,它的用法恰好相反。
4. Nightmare
Nightmare是一个中级的浏览器自动化库,它以浏览器的方式运行Electron程序。Electron ()是一个使用 JavaScript, HTML 和 CSS 等 Web 技术创建原生程序的框架,兼容Mac、Windows和Linux,可以建立出三个平台的桌面应用程序,它负责比较难搞的部份,我们只需把精力放到应用的核心上即可【Electron刚才加入了 OpenJS 基金会】。Nightmare是一个浓缩的版本,或者我们可以说,是一个简化版的Puppeteer。它有提供更多灵活性的插件完整的采集神器,包括对文件下载的支持。
Nightmare的目标是对外公开几个使用上去象是同步的方式调用,比如goto、type和click,而不是深度嵌套的反弹。最初是为在没有api的站点之间自动化执行任务而设计的,但最常用于UI测试和数据采集。
还可以运行mocha测试。
5. Osmosis
Osmosis是一个HTML/XML解析器和网页数据采集工具。它是用Node.js编撰的,用CSS3/xpath选择器和轻量级HTTP包装器打包。如果我们将它与Cheerio、jQuery和jsdom进行比较,则它没有明显的依赖性。
实例代码如下:
【202001】