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

十堰网站建设费用发帖子最好的几个网站

十堰网站建设费用,发帖子最好的几个网站,网站整站下载器下载utf8网页乱码,杭州手机网站制作电脑公司puppeteer简介#xff1a; Puppeteer 是一个 Node 库#xff0c;它提供了一个高级 API 来通过 DevTools 协议 控制 Chromium 或 Chrome。Puppeteer 默认以 headless 模式运行#xff0c; 但是可以通过修改配置文件运行“有头”模式。能作什么#xff1f;#xff1a; 生成…puppeteer简介 Puppeteer 是一个 Node 库它提供了一个高级 API 来通过 DevTools 协议 控制 Chromium 或 Chrome。Puppeteer 默认以 headless 模式运行 但是可以通过修改配置文件运行“有头”模式。能作什么 生成页面 PDF。 抓取 SPA单页应用并生成预渲染内容即“SSR”服务器端渲染。 自动提交表单进行 UI 测试键盘输入等。 创建一个时时更新的自动化测试环境。 使用最新的 JavaScript 和浏览器功能直接在最新版本的Chrome中执行测试。 捕获网站的 timeline trace用来帮助分析性能问题。 测试浏览器扩展。这是中文puppeteer文档 实战 一 安装 安装nodejs, 再输入npm install puppeteer 安装这个库。注意puppeteer库有两个版本一个是包含了chormedriver的puppeteer另一个是不包含chormedriver的轻量级的puppeteer-core库。 再通过npm init 初始化一下。 二 代码 1、需求我是打算通过关键字输入去爬取百度图片。 2、关键点①通过合适的selector去获取到相应的元素 ②这个图片是分组的需要分多个组,每个组的图片数目还不一样 ③需要定时的滑动页面去刷新数据 3、大致代码逻辑 ①通过config 中的Dogconfig.js去获取存储的路径 ②通过screenshot.js去实现爬取的主要图片的链接 ③通过utils中的srcToimg去实现通过链接将图片存储在本地的目录中 Dogconfig.js const path require(path);module.exports{Dogscreenshot: path.resolve(__dirname,../Dogscreenshot) }screenshot.js const puppeteer require(puppeteer); const {screenshot} require(./config/default); const { Dogscreenshot } require(./config/Dogconfig); const srcToimg require(./utils/srcToimg)function sleep (ms) {return new Promise(resolve setTimeout(resolve, ms))} //sleep函数async function autoScroll(page) { //滚动界面return page.evaluate(() {return new Promise((resolve, reject) {let totalHeight 0;let distance 10;let timer setInterval(() {let scrollHeight document.body.scrollHeight;window.scrollBy(0, distance);totalHeight distance;if (totalHeight scrollHeight) {clearInterval(timer);resolve();}}, 5000);})});}(async(){const brower await puppeteer.launch({headless:false, defaultViewport: null,args: [--start-fullscreen] });const page await brower.newPage();await page.goto(https://image.baidu.com);await page.setDefaultNavigationTimeout(0); //无限制时间防止执行太快什么元素都没有加载出来await page.setDefaultNavigationTimeout(0); // await page.setViewport({// width:1060,// height:2080,// });console.log(reset setViewport);await page.focus(#kw); //This method fetches an element with selector and focuses it.await page.keyboard.sendCharacter(狗); //Dispatches a keypress and input event. This does not send a keydown or keyup event.await page.click(.s_btn_wr); //uses Page.mouse to click in the center of the elementconsole.log(go to search list);page.on(load,async(){console.log(page loading done ,start fetch......);for(let group1;group5;group){for(let i 22;i45;i){try { await page.waitForSelector(#imgid div:nth-child(group) ul li:nth-child(i) div.imgbox div.imgbox-border a img); } catch (e) {console.log(element probably not exists , the system had aleady choose next element body);ii1;};try{console.log(#imgid div:nth-child(group) ul li:nth-child(i) div.imgbox div.imgbox-border a img)let imageUrl await page.$$eval(#imgid div:nth-child(group) ul li:nth-child(i) div.imgbox div.imgbox-border a img,(links){return links.map(x{if(x.src){return x.src;}else{return ;} });});await page.waitForSelector(#imgid div:nth-child(group) ul li:nth-child(i) a);let imageTitle await page.$$eval(#imgid div:nth-child(group) ul li:nth-child(i) a,(links{ return links.map(x{if(x.innerHTML){let xstrx.innerHTML.replace(/[:_.~!#$%^*() \ ?{}|, \/ ; \\ [ \] ·~!#%……*—— \ {}|《》“”【】、‘’。、]/g,); //去除字符串的标点符号return xstr;}}); }));//console.log(这是i的 imageTitle[0]);let data[];data.push(Dogscreenshot);data.push(imageTitle[0])if(imageUrl[0]){srcToimg(imageUrl[0],data);} //await autoScroll(page);//console.log(get ${images.length} images,start download....);}catch(e){console.log(e)await page.evaluate(window.scrollTo(0,100)) ; //滑动一下页面break;}; }}}); //Listen to page events.// await page.screenshot({// path:${screenshot}/${Date.now()}.png// }); //截图并保存在相应路径下//await sleep(50000);//await brower.close(); })(); srcToimg.js const httprequire(http); const httpsrequire(https); const path require(path); const fs require(fs); const {promisify} require(util); const writeFile promisify(fs.writeFile);module.exportsasync(src,data){if(/^(http|https)/.test(src)){await urlToimg(src,data);}else{await base64Toimg(src,data);} };//urlimage const urlToimgpromisify((url,data,callback){ //promise 用同步的方式写异步的代码避免陷入回调地狱const mod/^https/.test(url)?https:http;const ext path.extname(url);const filepath.join(data[0],${data[1]}${.jpeg})mod.get(url,res{res.pipe(fs.createWriteStream(file)).on(finish,(){ //pipe是node中的流概念callback();console.log(file);})}) });//base64img 如果图片返回的地址是以base64的形式返回的话。const base64Toimg async function(base64Str,data){//date:image/jepg ;base64,/asdasa...const matches base64Str.match(/^data:(.?);base64,(.)$/); //正则表达式的匹配try{const ext matches[1].split(/)[1].replace(jepg,jpg);const file path.jojn(data[0],${data[1]}.${ext});await writeFile(file,matches[2],base64);console.log(file);}catch(x){console.log(非法base64字符串);}}通过以上代码能实现要求。 值得注意的是 nodejs不能直接调用window会显示window not define的错误 因为Web中使用JavaScriptBOM是核心而BOM的核心对象是window。 所以我们要用到page.evalutate方法这是官方文档的解释 查阅其他博客知 page.evaluate 意为在浏览器环境执行脚本可传入第二个参数作为句柄而 page.$eval 则针对选中的一个 DOM 元素执行操作。 基础扩展补充 html是一门超文本标记语言dom document对象表明整个html文档,可用来访问页面中的全部元素函数 body表明document的主体子对象除浏览器头部页面中可以看到的内容都属于body中的内容post window表明浏览器中打开的窗口表明运行环境。this BOM浏览器对象模型Browser Object Model window: 1、它是js访问浏览器窗口的一个接口 2、它是一个全局对象定义在全局作用域中的变量函数都会变成window对象的属性和方法。 这是js的BOM操作参考博客
http://www.ho-use.cn/article/10815918.html

相关文章:

  • 网站建设公司推广网站品牌运营贵阳市房地产交易平台上线
  • tomcat做网站属于什么wordpress html结尾
  • 旅行做攻略的网站好珠海市公司网站建设
  • 企业自助建站系统下载泉州工程建设招投标信息网
  • 微信兼职平台网站开发竞价排名点击器
  • 手机网站制作解决方案网站做优化多少钱
  • 合肥有什么好的网站建设公司好石家庄网络推广
  • 安徽建设工程实名制网站怎样制作一个自己的网站
  • 有好点的网站建设公司吗wordpress4.8.3中文版
  • 网站首页的模块布局枣庄手机网站建设电话
  • 北京网站优化团队app 网站 优势
  • 网站建设服务商怎么收费泉州建设网站公司哪家好
  • 建什么网站容易挣钱网站建设实验报告模板
  • 安徽省建设厅到底哪个网站桥梁建设 网站
  • 建设网站策划书门户网站建设和运行招标公告
  • 佛山网站建设天博与建设通相关的网站
  • 网站搭建同一页不同按钮不同页面网站搭建哪家好
  • 昌平上门做网站那云服务器和网站空间
  • 怎么查网站备案信息查询wordpress 外观
  • 乌海市建设局网站医院网页设计
  • 网站灰色杭州建站官网建设
  • python用于网站开发作风建设活动网站
  • 模板网站劣势保定网站制作企业
  • 网站运营及推广方案免费获取源码的网站
  • 自己创建一个网站需要多少钱山西常见网站建设推荐优化
  • 深圳专业网站优化公司报价wordpress手动安装插件
  • wordpress外链本地化优化网站专题
  • 设计网站建设公司广西人才网
  • 网站可分为哪两种类型注册深圳公司的费用
  • 商丘市网站建设公司wordpress虚拟商品销售