NodeJs 第八章 数据抓取(爬虫)

什么是爬虫

爬虫 又称为网络爬虫,是一种基于规则对网址中文本、图片等信息进行自动抓取的程序。爬虫通过模拟真实用户,向服务器发送请求,持续对网页数据进行抓取,直到达成某一条件时停止。

爬虫的本质是在海量的互联网信息中通过筛选收集有用的信息,最终进行分析整合以供使用。

爬虫工作原理

爬虫的工作原理表现为获取初始 URL、根据初始信息更新 URL、通过读取 URL 解读网页内容以及在遵循爬虫系统指令停止爬取几个过程。爬虫首先会爬取初始 URL 网页信息,随后进行解析,从中获取新的 URL 地址,存放到爬取的 URL 队里中,爬取到的网页会被存储到原始数据库中。爬虫过程就是不断重复在 URL 中获取网页信息和从网页信息中获取新的 URL 的过程。在编写爬虫时,要设置爬取停止规则,当爬虫系统满足设置的停止规则时,爬虫会停止爬取。如果不设置爬取条件,爬虫会工作到无法获取新的 URL 为止。

爬虫分类

  • 通用网络爬虫
    通用网络爬虫的爬行范围和数量较大,对爬取速度和存储空间的要求较高,主要用于门户网站搜索引擎和大型 Web 服务提供商采集数据。通用网络爬虫覆盖面较广,一般采用并行工作方式,其结构大致分为以下几个模块:页面爬行、页面分析、链接过滤、页面数据库、URL 队列以及初始 URL 集合。
  • 聚焦网络爬虫
    聚焦网路爬虫是指可以进行内容筛选的爬虫,相较通用网络爬虫增加了链接评价模块和内容评价模块,对爬取页面的内容和链接进行重要性评价,根据不同的重要性对 URL 访问顺序进行排序。聚焦网络爬虫指爬取与需求主题相关的页面,节省硬件和网络资源。
  • 增量式网络爬虫
    增量式网络爬虫是指只爬取新产生或发生变化的网页,只在需要时进行爬取,降低了爬虫的数据下载量,但爬行算法比较复杂。增量式网路爬虫的结构包含爬行模块、排序模块、更新模块、本地页面集、待爬行 URL 集以及本地页面 URL 集。
  • 深层网络爬虫
    深层网络爬虫通过表单填写进行内容爬取,主要用来爬取隐藏在搜索表单后,不能通过静态链接直接爬取的网页。深层网络爬虫包含爬行控制权、解析器、表单分析器、表单处理器、响应分析器、LVS 控制器六个基本模块和两个爬虫内部数据结构。

如何识别爬虫

识别爬虫的常见方法是检查 HTTP 协议头的 User-agent 字段,通过字段中含有的用户标识信息进行判断,确定发起访问请求的IP地址是否与声明一致。由于爬虫对 URL 访问量较大,HTTP 请求率高,对特定文件类型请求较多,对于一些无法识别的爬虫,可以基于请求速率、访问量、请求方法等进行算法识别。另外,识别恶意爬虫的常用策略是进行黑名单匹配,但爬虫会经常更换 IP 地址,需要精细地分析爬虫行为,判断爬虫的行为动机。

Node中如何实现爬虫

我们可以利用 axios 发送一个http 请求,然后利用 cheerio 解析

  • axios 客户端和服务器通用
  • cheerio Jquery的核心库,与dom无关
sql 复制代码
async function getHTML() {
  const resp = await axios.get("https://xxx.com");
  return resp.data;
}

async function getBookLinks() {
  const html = await getBooksHTML();
  const $ = cheerio.load(html);
  const body = $("body");
}
相关推荐
喵手2 小时前
Python爬虫实战:把“菜鸟教程”的知识树连根拔起(递归/遍历实战)(附 CSV 导出)!
爬虫·python·爬虫实战·python爬虫工程化实战·零基础python爬虫教学·菜鸟教程数据采集·采集菜鸟教程于csv
0思必得07 小时前
[Web自动化] 数据抓取、解析与存储
运维·前端·爬虫·selenium·自动化·web自动化
喵手19 小时前
Python爬虫零基础入门【第九章:实战项目教学·第15节】搜索页采集:关键词队列 + 结果去重 + 反爬友好策略!
爬虫·python·爬虫实战·python爬虫工程化实战·零基础python爬虫教学·搜索页采集·关键词队列
喵手20 小时前
Python爬虫零基础入门【第九章:实战项目教学·第14节】表格型页面采集:多列、多行、跨页(通用表格解析)!
爬虫·python·python爬虫实战·python爬虫工程化实战·python爬虫零基础入门·表格型页面采集·通用表格解析
0思必得021 小时前
[Web自动化] 爬虫之API请求
前端·爬虫·python·selenium·自动化
喵手21 小时前
Python爬虫实战:从零构建 Hacker News 数据采集系统:API vs 爬虫的技术抉择!(附CSV导出 + SQLite 存储)!
爬虫·python·爬虫实战·hacker news·python爬虫工程化实战·零基础python爬虫教学·csv导出
0思必得01 天前
[Web自动化] 爬虫之网络请求
前端·爬虫·python·selenium·自动化·web自动化
喵手1 天前
Python爬虫零基础入门【第九章:实战项目教学·第6节】断点续爬:任务状态表 + 失败队列重放!
爬虫·python·爬虫实战·python爬虫工程化实战·零基础python爬虫教学·断点续爬·任务状态表
安然无虞1 天前
「深入理解多线程编程」再谈线程
爬虫·python·测试工具
小尘要自信1 天前
高级网络爬虫实战:动态渲染、反爬对抗与分布式架构
分布式·爬虫·架构