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爬虫第3课:BeautifulSoup解析HTML与数据提取
爬虫·python·网络爬虫·beautifulsoup·python爬虫·python3·requests
小白学大数据9 小时前
Python爬虫常见陷阱:Ajax动态生成内容的URL去重与数据拼接
爬虫·python·ajax
Jonathan Star21 小时前
跨域处理的核心是解决浏览器的“同源策略”限制,主流方案
javascript·chrome·爬虫
Amazon数据采集1 天前
深度解析:如何构建企业级电商数据采集架构?Pangolin API实战指南
爬虫·api
亿牛云爬虫专家2 天前
优化分布式采集的数据同步:一致性、去重与冲突解决的那些坑与招
分布式·爬虫·数据采集·爬虫代理·代理ip·数据同步·房地产
深蓝电商API2 天前
静态网页 vs 动态网页:爬虫该如何选择抓取策略?
爬虫
B站_计算机毕业设计之家3 天前
数据分析:Python懂车帝汽车数据分析可视化系统 爬虫(Django+Vue+销量分析 源码+文档)✅
大数据·爬虫·python·数据分析·汽车·可视化·懂车帝
孤狼warrior3 天前
爬虫+卷积神经网络项目实战解析——对图像狗的识别分类
人工智能·爬虫·神经网络·cnn·卷积神经网络
嫂子的姐夫4 天前
11-py调用js
javascript·爬虫·python·网络爬虫·爬山算法
kunge1v54 天前
学习爬虫第五天:自动化爬虫
爬虫·python·自动化