node cheerio 爬虫上手体验

2023-10-08 20:40
文章标签 体验 爬虫 node cheerio

本文主要是介绍node cheerio 爬虫上手体验,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

cheerio是为服务器特别定制的,快速、灵活的jQuery核心实现.

安装
npm i cheerio
特点
  • 相似的语法:cheerio实现了核心jQuery的子集。cheerio会从jQuery库中删除所有DOM矛盾和浏览器的尴尬部分,展示她真正华丽的API
  • 非常快:cheerio使用一个非常简单的、一致的DOM模型。作为一个结果分析、处理和呈现的工具非常有效。基础的端到端基准测试显示其速度是JSDOM8倍。
  • 非常的灵活:cheerio基于htmlparser2cheerio可以解析几乎任何HTMLXML文档。
使用

首先你需要加载HTMLjQuery的这一步是必须的,因为一个jQuery运行,常用DOM。在cheerio中,我们需要把HTML document传进去。

var cheerio = require('cheerio'),
$ = cheerio.load('<ul id="fruits">...</ul>');

如果你需要修改默认的解析选项你也可以传一个额外的对象给.load()

$ = cheerio.load('<ul id="fruits">...</ul>', {normalizeWhitespace: true,xmlMode: true
});

这些解析选项直接取自htmlparser2,因此也可以在cheerio中使用任何在htmlparser2中有效的选项。默认的选项是:

{normalizeWhitespace: false,xmlMode: false,decodeEntities: true
}
抓取求书网例子
npm i axios cheerio
const axios = require("axios");
const cheerio = require("cheerio");
const baseURL = "http://www.aidusk.org/";/*** 获取页面html* @param {String} url 路径* @param {Object} params 参数*/
async function getPage(url = "", params = {}) {const { data } = await axios({ method: "get", url: baseURL + url, params });const page = cheerio.load(data);return page;
}/*** 按关键词查询* @param {String} keyword 关键词*/
async function search(keyword) {const $ = await getPage("search.php", { searchkey: keyword });const listNode = $(".read_list li");return listNode.toArray().map((item) => {// 小说封面图const coverImg = $(item).find(".pic img").attr("src");const [t1, t2, t3] = $(item).find(".w1").children().get();// 小说idconst id = $(t1).find(".c1").attr("href").replace(/[^\d]/g, "");// 小说名const name = $(t1).find(".c1").text().replace(/[《》]/g, "");// 小说作者和更新时间const [author, updateDate] = $(t2).text().split(" ").map((item) => item.split(":")[1]);// 小说描述const desc = $(t3).text().replace(/\s/g, "");return {id,name,coverImg,desc,author,updateDate,};});
}search("天蚕土豆").then((res) => {console.log(res);
});
打印打印图片

这篇关于node cheerio 爬虫上手体验的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/167860

相关文章

Node.js 数据库 CRUD 项目示例详解(完美解决方案)

《Node.js数据库CRUD项目示例详解(完美解决方案)》:本文主要介绍Node.js数据库CRUD项目示例详解(完美解决方案),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考... 目录项目结构1. 初始化项目2. 配置数据库连接 (config/db.js)3. 创建模型 (models/

使用Node.js制作图片上传服务的详细教程

《使用Node.js制作图片上传服务的详细教程》在现代Web应用开发中,图片上传是一项常见且重要的功能,借助Node.js强大的生态系统,我们可以轻松搭建高效的图片上传服务,本文将深入探讨如何使用No... 目录准备工作搭建 Express 服务器配置 multer 进行图片上传处理图片上传请求完整代码示例

nvm如何切换与管理node版本

《nvm如何切换与管理node版本》:本文主要介绍nvm如何切换与管理node版本问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录nvm切换与管理node版本nvm安装nvm常用命令总结nvm切换与管理node版本nvm适用于多项目同时开发,然后项目适配no

无需邀请码!Manus复刻开源版OpenManus下载安装与体验

《无需邀请码!Manus复刻开源版OpenManus下载安装与体验》Manus的完美复刻开源版OpenManus安装与体验,无需邀请码,手把手教你如何在本地安装与配置Manus的开源版OpenManu... Manus是什么?Manus 是 Monica 团队推出的全球首款通用型 AI Agent。Man

Node.js net模块的使用示例

《Node.jsnet模块的使用示例》本文主要介绍了Node.jsnet模块的使用示例,net模块支持TCP通信,处理TCP连接和数据传输,具有一定的参考价值,感兴趣的可以了解一下... 目录简介引入 net 模块核心概念TCP (传输控制协议)Socket服务器TCP 服务器创建基本服务器服务器配置选项服

mac安装nvm(node.js)多版本管理实践步骤

《mac安装nvm(node.js)多版本管理实践步骤》:本文主要介绍mac安装nvm(node.js)多版本管理的相关资料,NVM是一个用于管理多个Node.js版本的命令行工具,它允许开发者在... 目录NVM功能简介MAC安装实践一、下载nvm二、安装nvm三、安装node.js总结NVM功能简介N

Python爬虫selenium验证之中文识别点选+图片验证码案例(最新推荐)

《Python爬虫selenium验证之中文识别点选+图片验证码案例(最新推荐)》本文介绍了如何使用Python和Selenium结合ddddocr库实现图片验证码的识别和点击功能,感兴趣的朋友一起看... 目录1.获取图片2.目标识别3.背景坐标识别3.1 ddddocr3.2 打码平台4.坐标点击5.图

Python结合requests和Cheerio处理网页内容的操作步骤

《Python结合requests和Cheerio处理网页内容的操作步骤》Python因其简洁明了的语法和强大的库支持,成为了编写爬虫程序的首选语言之一,requests库是Python中用于发送HT... 目录一、前言二、环境搭建三、requests库的基本使用四、Cheerio库的基本使用五、结合req

什么是 Linux Mint? 适合初学者体验的桌面操作系统

《什么是LinuxMint?适合初学者体验的桌面操作系统》今天带你全面了解LinuxMint,包括它的历史、功能、版本以及独特亮点,话不多说,马上开始吧... linux Mint 是一款基于 Ubuntu 和 Debian 的知名发行版,它的用户体验非常友好,深受广大 Linux 爱好者和日常用户的青睐,

Node.js 中 http 模块的深度剖析与实战应用小结

《Node.js中http模块的深度剖析与实战应用小结》本文详细介绍了Node.js中的http模块,从创建HTTP服务器、处理请求与响应,到获取请求参数,每个环节都通过代码示例进行解析,旨在帮... 目录Node.js 中 http 模块的深度剖析与实战应用一、引言二、创建 HTTP 服务器:基石搭建(一