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");
}
相关推荐
oh,huoyuyan6 小时前
网页公开数据采集工具推荐
人工智能·爬虫·火车采集器
崔子末7 小时前
某影视库剧集列表以及查询接口逆向
爬虫·python
雪山青木17 小时前
全国微博签到数据201912-202004
大数据·爬虫·python·数据挖掘·数据分析·新浪微博
TlSfoward18 小时前
DLL 指纹库 采集、检索 TLSFOWARD tls指纹库
爬虫·网络协议·https·自动化
有味道的男人2 天前
基于 Codex 爬虫构建亚马逊无人上架系统|竞品详情采集到商品发布完整实现
爬虫·亚马逊
张小凡vip2 天前
Python爬虫实战:高效稳定的文件下载模块设计与实现
开发语言·爬虫·python
tang777892 天前
爬虫代理报错速查:407/408/409/410/503 从报错到根治(实测可用)
爬虫·爬虫代理·动态代理ip·代理ip·503·407·爬虫报错
小白学大数据3 天前
Python 爬虫实战:抓取汽车之家二手车成交价格与里程数据
开发语言·爬虫·python·汽车
张小凡vip3 天前
python--爬虫--成熟的爬虫框架Scrapy
爬虫·python·scrapy
大数据魔法师3 天前
DrissionPage 从入门到实战:一站式Python爬虫与网页自动化教程
爬虫·python·数据分析