当前位置: 首页 > 后端技术 > Node.js

nodejs爬取一个简单的网站小说生成txt

时间:2023-04-03 15:58:57 Node.js

找到一个没有反爬虫机制的普通网站,应该是ssr,而且直接请求返回的html有所有的dom内容,没有异步请求,所以抓取内容很容易。一开始用的是js脚本,发现请求是跨域的,所以改成node发送。步骤和代码都非常简单。1、异步请求使用request-promise包+promise1。如果文章的地址是连续的,可以直接遍历。2.如果文章地址页码乱码,可以获取文章列表的地址进行遍历。例如:2.处理内容使用cheerio,返回的内容直接是完整的html,cheerio可以将字符串的html转成dom结构,用法类似jq,很方便,和网站的结构我pick的page也很简单,所有的小说文字都在id内容的div里3.生成txt,直接把fs写入文件。所有代码varrp=require('request-promise');varcheerio=require('cheerio');varfs=require('fs')varstart=786776varend=786844vararr=newArray(end-start+1).fill(null).map(function(item,index){returnrp('小说网址'+(start+index)+'.html')})Promise.all(arr).then(function(res,err){if(err){console.log('err')}varstr=''res.map(function(item,index){var$=cheerio.load(item.toString());vartable=$('body').find('#content').eq(0).text();str+=table})fs.writeFile('Evil.txt',str,'utf8',function(error){if(error){console.log(error);returnfalse;}console.log('Written成功');})})最终结果:这是第一次尝试,后面会尝试爬取异步请求的网站。如有问题请指出,谢谢