背景:c#课上老师问我怎么没有课本,面对30多块的课本表示并不想买,于是各种搜索结果只在书问网看见有电子版,并且只能免费预览几十页。
过程:
1.本着能不花钱就不花钱的原则,提示我付费继续阅读后清除浏览器数据发现又可以继续看几十页,得出结果:禁用cookie即可无限预览。
看了下预览页面的html源码,结构不算复杂,内容是一张图片,瞬间想起图片生成pdf,然后就开始尝试使用nodejs开发一个小工具方便下载某些书籍。
使用request+request-promise来处理异步网络请求,使用cheerio解析html获取相关数据,bluebird解决回调金字塔(至今没怎么用明白),mkdirp快速创建文件夹,rimraf快速删除文件夹,pdfkit将图片生成pdf。
开发过程遇到的陷阱(大多数是因为自己能力的不足):
1.promise.then里嵌套异步操作需要按序执行的话可以return该异步操作的promise对象。(因为这个导致的bug拖进度挺久)
2.utf-8编码网页在cheerio.load的时候最好加上disableEncodeEntities:false参数,不然汉字会是utf-8编码(水平有限不知怎么描述,反正不是正常汉字)
过程:
1.本着能不花钱就不花钱的原则,提示我付费继续阅读后清除浏览器数据发现又可以继续看几十页,得出结果:禁用cookie即可无限预览。
看了下预览页面的html源码,结构不算复杂,内容是一张图片,瞬间想起图片生成pdf,然后就开始尝试使用nodejs开发一个小工具方便下载某些书籍。
使用request+request-promise来处理异步网络请求,使用cheerio解析html获取相关数据,bluebird解决回调金字塔(至今没怎么用明白),mkdirp快速创建文件夹,rimraf快速删除文件夹,pdfkit将图片生成pdf。
开发过程遇到的陷阱(大多数是因为自己能力的不足):
1.promise.then里嵌套异步操作需要按序执行的话可以return该异步操作的promise对象。(因为这个导致的bug拖进度挺久)
2.utf-8编码网页在cheerio.load的时候最好加上disableEncodeEntities:false参数,不然汉字会是utf-8编码(水平有限不知怎么描述,反正不是正常汉字)
最后放源码,仅供参考,不要被我某些不规范的代码误导
https://gitee.com/981764793/shuwen-download