04-page.js 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. const fs = require("fs");
  2. const puppeteer = require('puppeteer');
  3. const shell = require('shelljs');
  4. const utils = require('./utils/base');
  5. const config = require('./utils/config');
  6. var _list = require('./utils/list');
  7. const len = _list.length;
  8. let index = 0;
  9. const createPage = async (url) => {
  10. const browser = await puppeteer.launch({
  11. args: ['--no-sandbox', '--disable-setuid-sandbox'], // 沙箱模式下运行
  12. // headless: false, //默认为true(无头),不显示浏览器界面
  13. slowMo: 200,
  14. });
  15. const page = (await browser.pages())[0]; //这是我的写法,只有一个tab
  16. await page.goto(url); //跳转到掘金
  17. const result = await page.evaluate(() => {
  18. return new Promise(resolve => {
  19. let content = {
  20. title: document.getElementsByTagName('h1')[0].innerText,
  21. page: document.getElementById('content').innerText
  22. };
  23. resolve(content);
  24. });
  25. });
  26. await browser.close(); //关闭浏览器
  27. return result;
  28. };
  29. forEachUrl();
  30. function forEachUrl() {
  31. if (_list[index] !== undefined) {
  32. console.clear();
  33. console.log(`还剩${len - index}; 当前进度:${_list[index].index} ${_list[index].title}`);
  34. createPage(_list[index].href).then(res => {
  35. return utils.page(_list[index], res);
  36. }).then(res => {
  37. fs.writeFileSync('./book/OEBPS/Text/text' + _list[index].index + '.xhtml', res);
  38. setTimeout(() => {
  39. index += 1;
  40. forEachUrl();
  41. }, 200);
  42. });
  43. } else {
  44. shell.exec(`zip -p -r ${config.name}.epub book`);
  45. // linux 下执行命令
  46. // shell.exec(`./utils/kindlegen -c1 ${utils.name}.epub -locale zh`);
  47. // mac下执行命令
  48. shell.exec(`/Users/honghaitao/Applications/KindleGen_Mac_i386_v2_9/kindlegen -c1 ${config.name}.epub -locale zh`);
  49. // shell.exec(`rm ${utils.name}.epub`);
  50. }
  51. }