<代码>操纵木偶的代码>翻译是操纵木偶的人,利用这个工具,我们能做一个操纵页面的人。<代码>操纵木偶的代码>是一个<代码> Nodejs> 代码的库,支持调用<代码>铬的API来操纵网络> 代码,相比较<代码> 代码>或硒是<代码> PhantomJs> 代码,它最大的特点就是它的操作Dom <代码> 代码>可以完全在内存中进行模拟既在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李