怎么用node抓取小说章节
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,本文小编为大家详细介绍"怎么用node抓取小说章节",内容详细,步骤清晰,细节处理妥当,希望这篇"怎么用node抓取小说章节"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。准
千家信息网最后更新 2026年11月01日怎么用node抓取小说章节
本文小编为大家详细介绍"怎么用node抓取小说章节",内容详细,步骤清晰,细节处理妥当,希望这篇"怎么用node抓取小说章节"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

准备用electron制作一个小说阅读工具练练手,那么首先要解决的就是数据问题,也就是小说的文本。
这里准备使用nodejs对小说网站进行爬虫爬取,尝试爬下一本小说,数据就不存放数据库了,先使用txt作为文本存储
在node中对于网站的请求,本身就存在http和https库,内部含有request请求方法。
实例:
request = https.request(TestUrl, { encoding:'utf-8' }, (res)=>{ let chunks = '' res.on('data', (chunk)=>{ chunks += chunk }) res.on('end',function(){ console.log('请求结束'); })})但是也就到此为止了,只是存取了一个html的文本数据,并不能够对内部元素进行提取之类的工作(也可以正则拿,但是太过复杂)。
我将访问到的数据通过fs.writeFile方法存储起来了,这只是整个网页的html

但是我想要的还有各个章节中的内容,这样一来就需要获取章节的超链接,组成超链接链表进去爬取
cheerio库
在文档中,可以使用示例进行调试
使用cheerio解析HTML
cheerio解析html时,获取dom节点的方式与jquery相似。
根据之前获取到的书籍首页的html,查找自己想要的dom节点数据
const fs = require('fs')const cheerio = require('cheerio');// 引入读取方法const { getFile, writeFun } = require('./requestNovel')let hasIndexPromise = getFile('./hasGetfile/index.html');let bookArray = [];hasIndexPromise.then((res)=>{ let htmlstr = res; let $ = cheerio.load(htmlstr); $(".listmain dl dd a").map((index, item)=>{ let name = $(item).text(), href = 'https://www.shuquge.com/txt/147032/' + $(item).attr('href') if (index > 11){ bookArray.push({ name, href }) } }) // console.log(bookArray) writeFun('./hasGetfile/hrefList.txt', JSON.stringify(bookArray), 'w')})打印一下信息
可以同时将这些信息也存储起来
现在章节数和章节的链接都有了,那么就可以获取章节的内容了。
因为批量爬取最后需要IP代理,这里还没准备,暂时先写获取某一章节小说的内容方法
爬取某一章节的内容其实也比较简单:
// 爬取某一章节的内容方法function getOneChapter(n) { return new Promise((resolve, reject)=>{ if (n >= bookArray.length) { reject('未能找到') } let name = bookArray[n].name; request = https.request(bookArray[n].href, { encoding:'gbk' }, (res)=>{ let html = '' res.on('data', chunk=>{ html += chunk; }) res.on('end', ()=>{ let $ = cheerio.load(html); let content = $("#content").text(); if (content) { // 写成txt writeFun(`./hasGetfile/${name}.txt`, content, 'w') resolve(content); } else { reject('未能找到') } }) }) request.end(); })}getOneChapter(10)这样,就可以根据上面的方法,来创造一个调用接口,传入不同的章节参数,获取当前章节的数据
const express = require('express'); const IO = express();const { getAllChapter, getOneChapter } = require('./readIndex')// 获取章节超链接链表getAllChapter();IO.use('/book',function(req, res) { // 参数 let query = req.query; if (query.n) { // 获取某一章节数据 let promise = getOneChapter(parseInt(query.n - 1)); promise.then((d)=>{ res.json({ d: d }) }, (d)=>{ res.json({ d: d }) }) } else { res.json({ d: 404 }) } })//服务器本地主机的数字IO.listen('7001',function(){ console.log("启动了。。。");})读到这里,这篇"怎么用node抓取小说章节"文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注行业资讯频道。
章节
小说
数据
内容
方法
链接
文本
文章
准备
存储
信息
参数
只是
网站
节点
不同
复杂
妥当
相似
到此为止
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网络科技
天津市摩尔互联网科技
互联网科技网
互联网科技公司起名
互联网科技开发公司
互联网科技股票
唐信互联网科技
互联网金融科技平台
佩信高科技互联网
互联网科技中介
互联网系的金融科技公司
来此购互联网科技有限公司
河南猎农互联网科技有限公司
佛山市翊博互联网络科技有限公司
珠海东科互联网科技有限公司
湖北辰鑫科技互联网
福仕德教育科技互联网
恒生科技指数 中概互联网
互联网高科技绘画
六子台科技互联网展会
广州万易互联网科技有限公司
为想互联网科技怎么样
融贸通互联网科技
互联网和黑科技的看法
浙江互联网科技研学营
美国互联网科技实力
广州富喜互联网络科技
皮皮虾互联网科技有限公司
陕西彩京云互联网科技有限公司
广州全民伙伴互联网科技有限公司