spinner
是控制台的输出器,用来显示进度的,showNum
就是计算出来完成了多少的进度。
async function download(url, path, crawl) {
const opts = Object.assign(
{},
{
path,
waitTime: 0,
},
crawl.opts
) // 设置默认初始选项,通过 assign 构建可被覆盖的默认值
const spinner = ora('开始下载').start() // 提示信息开始旋转
await ensureSavaPath(resolve(path, 'text')) // 确保文件存在
spinner.color = 'yellow'
spinner.text = '开始爬取章节' // 改变文字与颜色
await downloadChapter(url, crawl, opts) // 下载章节
spinner.color = 'blue'
await downAllText(spinner, crawl, opts) // 下载文章内容
spinner.stop()
}
这里使用正常的方式编程即可,用 function 的原因是为了保留 this 指向。 $ 是 cheerio 提供的选择器,它跟 jquery 的使用基本相同,具体请查阅 文档 。
download(
'https://www.ybdu.com/xiaoshuo/0/910/', // 小说目录页
resolve(__dirname, '../jstm'), // 保存地址
getDataFromYbdu // 爬取规则
).catch(console.error)
process.argv
可以取到运行命令,去掉前两项是 node
跟 download.js
,网址末尾的 /
不能丢,丢了会有个 301
跳转,暂时还没做处理。
node download.js https://www.ybdu.com/xiaoshuo/0/910/ ./jxtm