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

相关文章

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 服务器:基石搭建(一

Node.js学习记录(二)

目录 一、express 1、初识express 2、安装express 3、创建并启动web服务器 4、监听 GET&POST 请求、响应内容给客户端 5、获取URL中携带的查询参数 6、获取URL中动态参数 7、静态资源托管 二、工具nodemon 三、express路由 1、express中路由 2、路由的匹配 3、路由模块化 4、路由模块添加前缀 四、中间件

Python3 BeautifulSoup爬虫 POJ自动提交

POJ 提交代码采用Base64加密方式 import http.cookiejarimport loggingimport urllib.parseimport urllib.requestimport base64from bs4 import BeautifulSoupfrom submitcode import SubmitCodeclass SubmitPoj():de

Node Linux相关安装

下载经编译好的文件cd /optwget https://nodejs.org/dist/v10.15.3/node-v10.15.3-linux-x64.tar.gztar -xvf node-v10.15.3-linux-x64.tar.gzln -s /opt/node-v10.15.3-linux-x64/bin/npm /usr/local/bin/ln -s /opt/nod

Python:豆瓣电影商业数据分析-爬取全数据【附带爬虫豆瓣,数据处理过程,数据分析,可视化,以及完整PPT报告】

**爬取豆瓣电影信息,分析近年电影行业的发展情况** 本文是完整的数据分析展现,代码有完整版,包含豆瓣电影爬取的具体方式【附带爬虫豆瓣,数据处理过程,数据分析,可视化,以及完整PPT报告】   最近MBA在学习《商业数据分析》,大实训作业给了数据要进行数据分析,所以先拿豆瓣电影练练手,网络上爬取豆瓣电影TOP250较多,但对于豆瓣电影全数据的爬取教程很少,所以我自己做一版。 目

Golang 网络爬虫框架gocolly/colly(五)

gcocolly+goquery可以非常好地抓取HTML页面中的数据,但碰到页面是由Javascript动态生成时,用goquery就显得捉襟见肘了。解决方法有很多种: 一,最笨拙但有效的方法是字符串处理,go语言string底层对应字节数组,复制任何长度的字符串的开销都很低廉,搜索性能比较高; 二,利用正则表达式,要提取的数据往往有明显的特征,所以正则表达式写起来比较简单,不必非常严谨; 三,使

Golang网络爬虫框架gocolly/colly(四)

爬虫靠演技,表演得越像浏览器,抓取数据越容易,这是我多年爬虫经验的感悟。回顾下个人的爬虫经历,共分三个阶段:第一阶段,09年左右开始接触爬虫,那时由于项目需要,要访问各大国际社交网站,Facebook,myspace,filcker,youtube等等,国际上叫得上名字的社交网站都爬过,大部分网站提供restful api,有些功能没有api,就只能用http抓包工具分析协议,自己爬;国内的优酷、

Golang网络爬虫框架gocolly/colly(三)

熟悉了《Golang 网络爬虫框架gocolly/colly 一》和《Golang 网络爬虫框架gocolly/colly 二》之后就可以在网络上爬取大部分数据了。本文接下来将爬取中证指数有限公司提供的行业市盈率。(http://www.csindex.com.cn/zh-CN/downloads/industry-price-earnings-ratio) 定义数据结构体: type Zhj