spinner 是控制台的输出器,用来显示进度的,showNum 就是计算出来完成了多少的进度。

  1. async function download(url, path, crawl) {
  2. const opts = Object.assign(
  3. {},
  4. {
  5. path,
  6. waitTime: 0,
  7. },
  8. crawl.opts
  9. ) // 设置默认初始选项,通过 assign 构建可被覆盖的默认值
  10. const spinner = ora('开始下载').start() // 提示信息开始旋转
  11. await ensureSavaPath(resolve(path, 'text')) // 确保文件存在
  12. spinner.color = 'yellow'
  13. spinner.text = '开始爬取章节' // 改变文字与颜色
  14. await downloadChapter(url, crawl, opts) // 下载章节
  15. spinner.color = 'blue'
  16. await downAllText(spinner, crawl, opts) // 下载文章内容
  17. spinner.stop()
  18. }

这里使用正常的方式编程即可,用 function 的原因是为了保留 this 指向。 $ 是 cheerio 提供的选择器,它跟 jquery 的使用基本相同,具体请查阅 文档

  1. download(
  2. 'https://www.ybdu.com/xiaoshuo/0/910/', // 小说目录页
  3. resolve(__dirname, '../jstm'), // 保存地址
  4. getDataFromYbdu // 爬取规则
  5. ).catch(console.error)

process.argv 可以取到运行命令,去掉前两项是 nodedownload.js ,网址末尾的 / 不能丢,丢了会有个 301 跳转,暂时还没做处理。

  1. node download.js https://www.ybdu.com/xiaoshuo/0/910/ ./jxtm