爬虫利器操纵实战

  

  

<代码>操纵木偶的翻译是操纵木偶的人,利用这个工具,我们能做一个操纵页面的人。<代码>操纵木偶的是一个<代码> Nodejs> 铬的API来操纵网络> 或硒是<代码> PhantomJs> 可以完全在内存中进行模拟既在V8 <代码> 引擎中处理而不打开浏览器,而且关键是这个是Chrome团队在维护,会拥有更好的兼容性和前景。

  

<代码>操纵>   

      <李>利用网页生成PDF,图片   <李>爬取温泉应用,并生成预渲染内容(即“苏维埃社会主义共和国”服务端渲染)   <李>可以从网站抓取内容李   <李>自动化表单提交,UI测试,键盘输入等李   <李>帮你创建一个最新的自动化测试环境(铬),可以直接在此运行测试用例6。捕获站点的时间线,以便追踪你的网站,帮助分析网站性能问题   
  

  

安装<代码>操纵木偶的

  

由于封网,直接下载<代码> 铬会失败,可以先阻止下载<代码> 铬然后再手动下载它

        #安装命令   npm我操纵木偶的人——保存      #错误信息   错误:无法下载r515411铬!“PUPPETEER_SKIP_CHROMIUM_DOWNLOAD”env变量设置为跳过下载。      #设置环境变量跳过下载铬   设置PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=1      #或者可以这样干,只下载模块而不建造   npm我——保存操纵木偶的人——ignore-scripts      #成功安装模块   + puppeteer@0.13.0   添加1包在1.77 s 之前      

手动下载铬、下载完后将压缩包解压,会有个铬。应用程序,将其放在你喜欢的目录下,例如<代码>/用户/huqiyang/文件/项目/z/铬/铬。应用程序> 铬。应用程序会在.local-chromium>   

<强>提示:下载铬失败解决办法

  

更换国内铬源

        PUPPETEER_DOWNLOAD_HOST=https://storage.googleapis.com.cnpmjs.org   npm我操纵木偶的      

或者用cnpm安装

        npm安装- g cnpm——注册表=https://registry.npm.taobao.org   cnpm我操纵木偶的      

点击查阅Puppeteer API
  

  

初试操纵,截个图吧
  

  

知识点   

      <李>操纵木偶的人。发射启动浏览器实例   <李> browser.newPage (),李创建一个新页面   <李>页面。李goto进入指定网页   <李>页面。李截图截图   
        const操纵木偶的人=要求(“操纵”);      (异步()=比;{   const浏览器=等待(puppeteer.launch ({//若是手动下载的铬需要指定铬地址,默认引用地址为/项目目录/node_modules/操纵/.local-chromium/executablePath: '/用户/huqiyang/文件/项目/z/铬/Chromium.app/内容/MacOS/铬”,//设置超时时间   超时:15000,//如果是访问https页面此属性会忽略https错误   ignoreHTTPSErrors:没错,//打开开发者工具,当此值为真时,无头总为假   devtools:假的,//关闭无头模式,不会打开浏览器   无头:假   }));   const页面=等待browser.newPage ();   等待page.goto (“https://www.jianshu.com/u/40909ea33e50”);   等待page.screenshot ({   路径:“jianshu.png”,   类型:“png”,//质量:100年,只对jpg有效   fullPage:没错,//指定区域截的图,剪辑和fullPage两者只能设置一个//片段:{//x: 0,//y: 0,//宽度:1000年,//高:40//}   });   browser.close ();   })();      之前      

运行结果,

  

爬虫利器操纵实战

  

进阶,获取网易云音乐的歌词和评论

  

网易云音乐的API经过AES和RSA算法加密,需要携带加密的信息通过发布方式请求才能获取到数据。但<代码>操纵木偶的出现后,这些都不重要了,只要它页面上显示了,通过<代码>操纵>   

知识点   

      <李>页面。类型获取输入框焦点并输入文字   <李> page.keyboard。压模拟键盘按下某个按键,目前mac上组合键无效为已知错误李   <李>页面。等待页面等待,可以是时间,某个元素,某个函数   <李> page.frames()获取当前页面所有的iframe,然后根据iframe的名字精确获取某个想要的iframe李

    爬虫利器操纵实战