找了一个没有反爬虫机制的一般网站,应该是 ssr 的,间接申请返回的 html 中就有全副的 dom 内容,没有异步申请,所以抓内容很容易。
一开始应用 js 脚本,发现申请跨域,所以改为 node 发送,步骤和代码很简略。
1. 异步申请
应用了 request-promise 包 +promise
2. 解决内容
应用了 cheerio,返回的内容间接是残缺的 html,cheerio 能够把字符串的 html 转为 dom 构造,用法和 jq 差不多,很不便,而且我扒的网站页面构造也很简略,所有的小说文本都在 id 为 content 的 div 里
3. 生成 txt
间接 fs 写入文件即可
全副代码
var rp = require('request-promise');
var cheerio = require('cheerio');
var fs = require('fs')
var start = 786776
var end = 786844
var arr = new Array(end-start+1).fill(null).map(function(item,index){return rp('小说网址'+(start+index)+'.html')
})
Promise.all(arr).then(function(res,err){if(err){console.log('err')
}
var str=''
res.map(function(item,index){var $ = cheerio.load(item.toString());
var table=$('body').find('#content').eq(0).text();
str+=table
})
fs.writeFile('恶徒.txt',str,'utf8',function(error){if(error){console.log(error);
return false;
}
console.log('写入胜利');
})
})
最终成绩:
首次尝试,之后再试试爬异步申请的网站,如有问题请指出,感激。