当前位置: 首页 > news >正文

某旅行社网站建设规划书深圳百姓网

某旅行社网站建设规划书,深圳百姓网,上海十大知名装修公司,三亚网站制文章目录 上一篇效果演示Puppeteer 修改浏览器的默认下载位置控制并发数错误重试并发控制 错误重试源码 上一篇 Puppeteer 使用实战#xff1a;如何将自己的 CSDN 专栏文章导出并用于 Hexo 博客#xff08;一#xff09; 效果演示 上一篇实现了一些基本功能#xff0c;… 文章目录 上一篇效果演示Puppeteer 修改浏览器的默认下载位置控制并发数错误重试并发控制 错误重试源码 上一篇 Puppeteer 使用实战如何将自己的 CSDN 专栏文章导出并用于 Hexo 博客一 效果演示 上一篇实现了一些基本功能但是还有些问题 有些时候页面会卡死或者说找不到导出的元素导致这篇文章下载不了不能控制标签页的打开数量不够灵活只能一个标签页、一个标签页的工作效率低下下载文件的默认位置没有修改 根据上面的问题这次添加了并发控制以及错误重试效果如下图 Puppeteer 修改浏览器的默认下载位置 查了官网好久的相关配置没找到然后谷歌终于在这个网站上找到了答案 我的代码修改在这里了注意声明的位置一定要提前 import path from path; const __dirname path.resolve(path.dirname()); const myDownloadPath ${__dirname}\\my-post;const page await browser.newPage();const client await page.createCDPSession();await client.send(Page.setDownloadBehavior, {behavior: allow,downloadPath: myDownloadPath,});这里提一嘴我原先是把代码放到下图这个位置每次新建页面下重新设置发现总是有些小 bug 有的时候会下载到浏览器的默认目录也就是代码根本没生效多线程的时候会部分放到指定目录部分放到默认目录比方说双并发的时候具体问题看我下面的图 给我的感觉它算是一个全局的修改所以只需要提前声明一次即可不用每一次新建 newPage 就设置一次 控制并发数 这个可以参考一下这个叫 async-pool 的库的源码 我在这儿写了一个小案例可以试试 // https://github.com/rxaviers/async-pool/blob/1.x/lib/es7.js async function asyncPool(poolLimit, iterable, iteratorFn) {const ret [];const executing new Set();for (const item of iterable) {const p Promise.resolve().then(() iteratorFn(item));ret.push(p);executing.add(p);const clean () executing.delete(p);p.then(clean).catch(clean);if (executing.size poolLimit) {await Promise.race(executing);}}return Promise.all(ret); }const timeout (i) {console.log(开始 i);return new Promise((resolve) setTimeout(() {resolve(i);console.log(结束 i);}, 1000 Math.random() * 1000)); };let urls Array(10).fill(0).map((v, i) i); console.log(urls);(async () {const res await asyncPool(2, urls, timeout);console.log(res); })(); 错误重试 也是用了一个 demo 逻辑 const retry (fn, times) {return new Promise((res, rej) {const attempt () {fn().then(res).catch((error) {times-- 0 ? attempt() : rej(机会用光了);});};attempt();});};let getNum function () {console.log(函数执行一次);return new Promise((res, rej) {let num Math.random() * 10;num 2 ? res(数字小于2) : rej(数字大于2);});};retry(getNum, 3).then((mes) {console.log(mes);}).catch((err) {console.log(err);});并发控制 错误重试 结合之前的两个 demo我们修改一下自己的逻辑 // tools.js function retry(fn, times, item) {const allTime times;const articleId item.split(articleId)[1] || ;return new Promise((res, rej) {const attempt () {const currTime allTime - times 1;fn().then(() {console.log(Retry Success: 第 ${currTime} 次重试 ${articleId} 成功!);res(item);}).catch((error) {console.log(Warning: 第 ${currTime} 次重试 ${articleId} );if (times-- 0) {attempt();} else {console.log(Error: 已经重试 ${item} 文章 ${currTime} 次机会已用光);rej();}});};attempt();}); }// https://github.com/rxaviers/async-pool/blob/1.x/lib/es7.js export async function asyncPool(poolLimit, iterable, iteratorFn) {const ret [];const executing new Set();for (let i 0, len iterable.length; i len; i) {const item iterable[i];const articleId item.split(articleId)[1] || ;const p Promise.resolve().then(() iteratorFn(item)).catch(async (err) {console.log(${articleId} 解析失败即将重试);// 这里的 retry 也添加上 awaitawait retry(() iteratorFn(item), 3, item).catch(() {});});ret.push(p);executing.add(p);const clean () executing.delete(p);p.then(clean).catch(clean);if (executing.size poolLimit) {await Promise.race(executing);}}return Promise.all(ret); }然后调用一下 await asyncPool(3, baseWriteURLArray, handleURL);源码 想要源码可以查看此仓库如果有用记得 star 一下哦 https://github.com/Lovely-Ruby/CSDNBlogsExport
http://www.pierceye.com/news/23202/

相关文章:

  • 做网站如何大网页温州网站优化关键词
  • 百度知道入口盐城seo培训
  • 公司网站最新版wordpress下拉列表
  • phpmysql网站开发技术项目式教程个人网站建设方案书使用几号纸
  • 网站建设找什么公司石家庄市建设局官网
  • 电脑在哪里制作网站北京网站搭建公司排行
  • 什么是企业所得税东莞关键词优化推广
  • 大连网站建设 意动科技WordPress万级数据优化
  • 池州网站优化wordpress amp改成mip
  • 孝感房地产网站建设wordpress+下载站
  • 珠海市住房城乡建设局网站无锡网站优化
  • 开发网站的语言响应式网站设计规则
  • 如何发布自己做的网站三端互通传奇手游找服网站
  • 河南省工程建设监理协会网站郑州医院排名第一妇科
  • 深圳品牌网站制作推荐wordpress文档库主题
  • 网站首页有哪些内容注册一个网站的流程
  • 网站建设项目甘特图西安百度seo
  • 纸 技术支持 东莞网站建设广东企业网站建设报价
  • 做php网站教程视频打开网页出现网站建设中
  • 金华市东阳市建设局网站外协机械加工订单
  • 深圳做外贸网站哪家好wordpress翻页加li
  • 开发网站app公司福州seo代理商
  • 左右网站模版张家港早晨网站建设
  • 网站建设 我们是专业的网站做任务领q币
  • 注册qq空间网站wordpress设计素材主题
  • 嘉兴外贸网站建设哪个浏览器看黄页最快夸克浏览器
  • asp网站开发视频许昌专业做网站公司
  • 珠海网站建设公司有哪些电商培训教材
  • 小网站的制作用c 建网站时怎么做导航菜单栏
  • 室内设计效果图网站推荐网页制作登录界面代码