04-page.js 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. const fs = require("fs");
  2. const puppeteer = require('puppeteer');
  3. const utils = require('./utils/base');
  4. var $xindaming = require('./xindaming');
  5. const len = $xindaming.length;
  6. let index = 0;
  7. const createPage = async (url) => {
  8. const browser = await puppeteer.launch({
  9. headless: true, //默认为true(无头),不显示浏览器界面
  10. // slowMo: 200,
  11. });
  12. const page = (await browser.pages())[0]; //这是我的写法,只有一个tab
  13. await page.goto(url); //跳转到掘金
  14. const result = await page.evaluate(() => {
  15. return new Promise(resolve => {
  16. let content = {
  17. title: document.getElementsByTagName('h1')[0].innerText,
  18. page: document.getElementsByClassName('main1')[1].getElementsByTagName('p')[0].innerText
  19. };
  20. resolve(content);
  21. });
  22. });
  23. await browser.close(); //关闭浏览器
  24. return result;
  25. };
  26. forEachUrl();
  27. function forEachUrl() {
  28. if ($xindaming[index] !== undefined) {
  29. console.clear();
  30. console.log(`还剩${len - index}; 当前进度:${$xindaming[index].index} ${$xindaming[index].title}`);
  31. createPage($xindaming[index].href).then(res => {
  32. return utils.page($xindaming[index], res);
  33. }).then(res => {
  34. fs.writeFileSync('./book/OEBPS/Text/text' + $xindaming[index].index + '.xhtml', res);
  35. setTimeout(() => {
  36. index += 1;
  37. forEachUrl();
  38. }, 200);
  39. });
  40. }
  41. }