nestjs系列 - 爬虫
type
status
date
slug
summary
tags
category
icon
password
这章节我们需要研究如何使用nestjs爬虫获取数据
爬虫方法有很多种:接口爬取、静态页面爬取、使用无头浏览器引擎爬取
接口爬取
我们可以直接使用
axios
请求对应的接口获取json数据使用无头浏览器引擎爬取
我们可以使用
selenium
引擎做爬取处理,同时可以使用配合extract-stealth-evasions
去除爬虫行为。extract-stealth-evasions
是一个脚本,它提供了一种从 “puppeteer-extra-stealth” 中快速提取最新的隐身规避方法到(压缩的)JavaScript 的方式。生成的 JS 文件可以在纯 CDP 实现中使用,或者在开发工具中用于测试这些规避方法。puppeteer-extra/packages/extract-stealth-evasions at master · berstend/puppeteer-extra
使用
selenium
优点是匿名效果好,也适合SPA类型页面;缺点是需要考虑驱动浏览器引擎带来的内存开销静态页面爬取
我们可以使用
axios
获取服务器生成的html页面数据,然后借助cheerio
轻量dom查询引擎获取对应的数据.Cheerio 实现了核心 jQuery 的子集。 Cheerio 从 jQuery 库中删除了所有 DOM 不一致和浏览器缺陷,暴露其真正华丽的 API。Cheerio 使用非常简单、一致的 DOM 模型。 因此,解析、操作、以及渲染的效率非常高。Cheerio 可以解析几乎任何 HTML 或 XML 文档。 Cheerio 可在浏览器和服务器环境中运行。
例如,为了学习使用,下面是获取东方财富评论区的数据方法: