福建建设局网站无锡市建设银行总行网站

news/2025/9/22 15:52:12/文章来源:
福建建设局网站,无锡市建设银行总行网站,省财政厅门户网站三基建设,青岛做网站推广公司哪家好puppeteer 文档:puppeteer.js中文文档|puppeteerjs中文网|puppeteer爬虫教程 Puppeteer本身依赖6.4以上的Node#xff0c;但是为了异步超级好用的async/await#xff0c;推荐使用7.6版本以上的Node。另外headless Chrome本身对服务器依赖的库的版本要求比较高#xff0c;c… puppeteer 文档:puppeteer.js中文文档|puppeteerjs中文网|puppeteer爬虫教程 Puppeteer本身依赖6.4以上的Node但是为了异步超级好用的async/await推荐使用7.6版本以上的Node。另外headless Chrome本身对服务器依赖的库的版本要求比较高centos服务器依赖偏稳定v6很难使用headless Chrome提升依赖版本可能出现各种服务器问题包括且不限于无法使用ssh最好使用高版本服务器。 Puppeteer因为是一个npm的包所以安装很简单 pnpm i puppeteer-core puppeteer会自动安装一个谷歌浏览器的安装包所以选择core版但是得指定启动路径使用和例子 Puppeteer类似其他框架通过操作Browser实例来操作浏览器作出相应的反应。 const puppeteer require(puppeteer);(async () {const browser await puppeteer.launch();const page await browser.newPage();await page.goto(http://rennaiqian.com);await page.screenshot({path: example.png});await page.pdf({path: example.pdf, format: A4});await browser.close(); })();上述代码通过puppeteer的launch方法生成了一个browser的实例对应于浏览器launch方法可以传入配置项比较有用的是在本地调试时传入{headless:false}可以关闭headless模式。 const browser await puppeteer.launch({headless:false})browser.newPage方法可以打开一个新选项卡并返回选项卡的实例page通过page上的各种方法可以对页面进行常用操作。上述代码就进行了截屏和打印pdf的操作。 一个很强大的方法是page.evaluate(pageFunction, ...args)可以向页面注入我们的函数这样就有了无限可能 const puppeteer require(puppeteer);(async () {const browser await puppeteer.launch();const page await browser.newPage();await page.goto(http://rennaiqian.com);// Get the viewport of the page, as reported by the page.const dimensions await page.evaluate(() {return {width: document.documentElement.clientWidth,height: document.documentElement.clientHeight,deviceScaleFactor: window.devicePixelRatio};});console.log(Dimensions:, dimensions);await browser.close(); })();需要注意的是evaluate方法中是无法直接使用外部的变量的需要作为参数传入想要获得执行的结果也需要return出来。因为是一个开源一个多月的项目现在项目很活跃所以使用时自行查找api才能保证参数、使用方法不会错。 调试技巧 ① 关掉无界面模式有时查看浏览器显示的内容是很有用的。使用以下命令可以启动完整版浏览器 const browser await puppeteer.launch({headless: false})② 减慢速度slowMo选项以指定的毫秒减慢Puppeteer的操作。这是另一个看到发生了什么的方法 const browser await puppeteer.launch({headless:false,slowMo:250 });③捕获console的输出,通过监听console事件。在page.evaluate里调试代码时这也很方便 page.on(console, msg console.log(PAGE LOG:, ...msg.args)); await page.evaluate(() console.log(url is ${location.href}));爬虫实践 很多网页通过user-agent来判断设备可以通过page.emulate(options)来进行模拟。options有两个配置项一个为userAgent另一个为viewport可以设置宽度(width)、高度(height)、屏幕缩放(deviceScaleFactor)、是否是移动端(isMobile)、有无touch事件(hasTouch)。 const puppeteer require(puppeteer); const devices require(puppeteer/DeviceDescriptors); const iPhone devices[iPhone 6];puppeteer.launch().then(async browser {const page await browser.newPage();await page.emulate(iPhone);await page.goto(https://www.example.com);// other actions...await browser.close(); });上述代码则模拟了iPhone6访问某网站其中devices是puppeteer内置的一些常见设备的模拟参数。 很多网页需要登录有两种解决方案 让puppeteer去输入账号密码 常用方法点击可以使用page.click(selector[, options])方法也可以选择聚焦page.focus(selector)。 输入可以使用page.type(selector, text[, options])输入指定的字符串还可以在options中设置delay缓慢输入更像真人一些。也可以使用keyboard.down(key[, options])来一个字符一个字符的输入。 如果是通过cookie判断登录状态的可以通过page.setCookie(...cookies)想要维持cookie可以定时访问。 Tip有些网站需要扫码但是相同域名的其他网页却有登录就可以尝试去可以登录的网页登录完利用cookie访问跳过扫码。 简单例子 const puppeteer require(puppeteer);(async () {const browser await puppeteer.launch({headless: false});const page await browser.newPage();await page.goto(https://baidu.com);await page.type(#kw, puppeteer, {delay: 100});page.click(#su)await page.waitFor(1000);const targetLink await page.evaluate(() {return [...document.querySelectorAll(.result a)].filter(item {return item.innerText item.innerText.includes(Puppeteer的入门和实践)}).toString()});await page.goto(targetLink);await page.waitFor(1000);browser.close(); })()多元素处理 const puppeteer require(puppeteer-core);(async function () {//puppeteer.launch实例开启浏览器//可以传入一个options对象可以配置为无界面浏览器也可以配置为有界面浏览器//无界面浏览器性能更高更快有界面一般用于调试开式let options {//设置视窗的宽高defaultViewport: {width: 1400,height: 800,},//设置为有界面如果为true即为无界面// headless: false,args: [--window-size1400,700],//指定浏览器路径executablePath: C:\\Program Files (x86)\\Microsoft\\Edge\\Application\\msedge.exe,};let browser await puppeteer.launch(options);//打开新页面let page await browser.newPage();//访问页面await page.goto(https://www.jd.com/);//截屏// await page.screenshot({ path: example.png, fullPage: true });//获取页面内容// page.$eval相当于querySelector,然后在对这个元素进行dom操作// page.$$eval相当于querySelectorAll,然后在对这个元素进行dom操作let input await page.$(#key);await input.type(手机);await page.keyboard.press(Enter);await page.waitForSelector(.gl-warp.gl-item:last-child);const lis await page.$$eval(.gl-warp.gl-item, els //这个el就是获取到的对象//这里可以使用dom操作// console.log(el);els.map(item item.innerText));//这个lis就是上面回调函数的返回值console.log(lis);//关闭浏览器await browser.close(); })();输入文本与元素点击 const puppeteer require(puppeteer-core); (async function () {let options {defaultViewport: {width: 1400,height: 800,},headless: false,args: [--window-size1400,700],executablePath: C:\\Program Files (x86)\\Microsoft\\Edge\\Application\\msedge.exe,};let browser await puppeteer.launch(options);let page await browser.newPage();await page.goto(https://www.ygdy8.com/index.html);//获取页面内容// page.$相当于querySelector// page.$$相当于querySelectorAll//这些返回的是一个elementHandle对象const input await page.$(input[namekeyword]); // 定位输入框/* 1input.focus()page.keyboard.type(电影) *///2await input.type(电影);/* 1 elementHandle.click()const search await page.$(input[nameSubmit]); // 定位搜索按钮await search.click(); // 点击 *///2await page.click(input[nameSubmit]); })();获取元素的文本值 const puppeteer require(puppeteer-core); (async function () {let options {defaultViewport: {width: 1400,height: 700,},args: [--window-size1400,700],headless: false,executablePath: C:\\Program Files (x86)\\Microsoft\\Edge\\Application\\msedge.exe,};let browser await puppeteer.launch(options);let page await browser.newPage();await page.goto(https://www.baidu.com/);let input await page.waitForSelector(#kw);await input.type(hello world);let btn await page.$(#su);btn.click();/* 等待指定的选择器匹配的元素出现在页面中如果调用此方法时已经有匹配的元素那么此方法立即返回。如果指定的选择器在超时时间后扔不出现此方法会报错。 返回: PromiseElementHandle*/await page.waitForSelector(div#content_left div.result-op.c-container.xpath-log);let text await page.$eval(div#content_left div.result-op.c-container.xpath-log,el el.innerText);console.log(text); })();处理js方法 const puppeteer require(puppeteer-core); (async function () {let options {defaultViewport: {width: 1400,height: 700,},args: [--window-size1400,700],// headless: false,executablePath: C:\\Program Files (x86)\\Microsoft\\Edge\\Application\\msedge.exe,};let browser await puppeteer.launch(options);let page await browser.newPage();await page.goto(https://www.baidu.com/);let input await page.waitForSelector(#kw);await input.type(hello world);let btn await page.$(#su);btn.click();await page.waitForSelector(div#content_left div.result-op.c-container.xpath-log);//里面可以直接写js代码let text await page.evaluate(() {let div document.querySelector(div#content_left div.result-op.c-container.xpath-log);return div.innerText;});console.log(text); })();

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/909534.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

做网站能用本地的数据库嘛商业空间设计案例网站

1月11日,由零售圈主办、20零售连锁协会协办、30零售行业媒体支持的中国零售圈大会暨2024未来零售跨年盛典在西安落下帷幕,在这个零售行业盛典中,第七在线凭借其高精尖产品和卓越的服务质量成功入选,并荣获了“百灵奖 Buylink Awar…

虚拟主机网站建设网站开发文档范文

11服务: 功能:控制MCU进行重启,重启分为硬重启和软重启,11服务一般代表软重启,虽然它里面有个子服务是硬件重启,这里需要注意下;硬重启在日常工作中一般代表B重启。命令格式(请求&am…

做网站犯法了 程序员有责任吗江干网站建设

一、背景 近年来由于危险河道管理措施不到位,调峰电站泄水风险长期存在,信息通报制度缺失以及民众安全警觉性不高等因素导致的水电站在泄洪时冲走下游河道游客以及人民财产的事故频发。 二、系统介绍 水电站智能监测泄洪预警系统是一种集成了物联网、云…

超前探展!2025 云栖大会朋友圈晒图必备

2025 云栖大会来了! 从基础设施、大模型到 Agent 和具身智能 全景呈现 AI 技术演进与产业落地 尽在 9.24-9.26 杭州云栖小镇! 2025 云栖大会将持续三天,来自 50 余个国家的 2000 多位演讲嘉宾将齐聚杭州,通过云栖前…

古蔺中国建设银行网站改变网站的域名空间

其实这篇文章不是这里的,只是,后台很傻B地进不了了。也不知道是什么乱七八糟的问题。先写在这里,当做这么久没更新的偷懒好了。(而且,挑出来的这些都是精华呢!),大家各取所需吧: 1. …

html5 公司网站盘锦网站推广

611. 有效三角形的个数 给定一个包含非负整数的数组,你的任务是统计其中可以组成三角形三条边的三元组个数。 示例 1: 输入: [2,2,3,4] 输出: 3 解释: 有效的组合是: 2,3,4 (使用第一个 2) 2,3,4 (使用第二个 2) 2,2,3注意: 数组长度不超过1000。数组里整数的范…

杭州好的做网站公司阿里云申请域名做网站

当提到C的时候,很多人会觉得语法复杂、学习曲线陡峭,并且好像与C语言还有点"纠缠不清"。尽管如此,C仍然是当今世界上最受欢迎和最有影响力的编程语言之一。特别是在当今快速发展的人工智能(AI)领域&#xff…

衡量网站质量的标准工信部官网查询系统查询手机

微软发布了Entity Framework Core2.1,为EF开发者带来了很多期待已久的特性。EF Core 2.1增加了对SQL GROUP BY的支持,支持延迟加载和数据种子等。EF Core 2.1的第一个重要新增特性是将GroupBy操作符翻译成包含GROUP BY子句的SQL。缺乏这种支持被认为是EF…

织梦响应式茶叶网站模板php网站开发技术

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 实现方案 📒📝 操作步骤📝 注意事项⚓️ 相关链接 ⚓️📖 介绍 📖 小米设备的广告一直是用户头疼的问题,无论是开屏广告、应用内广告还是系统广告,都影响了用户体验。本文将详细介绍如何通过小米路由器实现去除广告…

凯里建设网站专注WordPress网站建设开发

在buildAdmin的表格中,通过按钮来选中和取消某一行 这种情况,只适合表格行的单选 在elementplus是这样说的 我们所使用的就是这个方法 看一下buildAdmin中的用法 highlight-current-row 是element-plus 中表格的属性 因为 buildadmin 中的table是对 el…

AutoCAD 2025 CAD 安装包中文永久免费免激活破解版下载及详细安装教程

一、CAD2025软件下载链接 软件名称:CAD2025 软件大小:2.69GB 安装环境:Win10以及以上 下载链接:(建议手机保存后到电脑端打开,下载解压无需任何密码) 夸克网盘:https://pan.quark.cn/s/9e4f2565ec22 迅雷网盘:…

做搜狗手机网站点做建网站

🚀 前端字段名和后端不一致?解锁 JSON 映射的“隐藏规则” 🌟 嘿,技术冒险家们!👋 今天我们要聊一个开发中常见的“坑”:前端传来的 JSON 参数字段名和后端对象字段名不一致,会发生…

报表神器Stimulsoft再升级!Stimulsoft Reports、Dashboards 和 PDF Forms 2025.4 即将发布!

报表神器Stimulsoft 即将推出 2025.4 新版本,本次更新带来了多项全新功能和优化修复,将为开发者与企业用户带来更高效、更灵活的报表与可视化体验。全球知名的报表解决方案服务商 Stimulsoft 即将推出 Stimulsoft Re…

题解:AT_agc027_e [AGC027E] ABBreviate

题意:很简单了,不再赘述。 做法: 我们先考虑最后的串会被更新成什么样子,发现应该是一段区间会缩起来成为一个字符,那么我们考虑一段怎么样的区间会变成 a 或 b。 我们考虑一个能缩的区间会缩成什么或者不能缩,首…

【PostgreSQL 17】11 窗口函数

直接这么写会报错,缺少GROUP BY SELECTemployee_id,first_name,last_name,salary,AVG(salary) FROM employees ;添加OVER() SELECTemployee_id,first_name,last_name,salary,AVG(salary) OVER() FROM employees ;定义…

网站添加链接如何创建微信公众号要钱吗

Threejs文字与css2d/css3d技术 学习ThreeJS的捷径学习之前先搞清楚自己想要什么样的效果贴图文字准备一张带文字的png贴图使用sprite来进行贴图实现2D始终面朝相机的文字使用planeGeometry来贴图实现3D文字使用planeGeometry来贴图实现伪3D文字动态贴图文字html2Canvas 文字几何…

网络公司品牌推广哈尔滨网站优化对策

下面是我翻译的关于帮助理解抽象类的例子。 这是一个例子帮助我们理解抽象类。在我看来这是一个非常简单的方法。让我们一起来看看下面的代码&#xff1a; <?php class Fruit { private $color; public function eat() { //chew } publi…

百度右侧相关网站西安做网站的公司哪家好

在Spring Cloud中&#xff0c;Gateway可以通过配置文件来实现负载均衡。以下是一个简单的配置示例&#xff0c;它演示了如何将请求代理到名为service-instance的服务的两个不同实例。 spring:cloud:gateway:routes:- id: service-instance-routeuri: lb://service-instancepre…

一级A做爰片安全网站长春关键词优化平台

展开全部步骤&#xff1a;1、设计总体中的N个个体编号。2、把号码写在号e68a84e8a2ad3231313335323631343130323136353331333431366366签上&#xff0c;将号签放在一个容器中搅拌均匀。3、每次从中抽取一个号签&#xff0c;连续不放回抽取n次。4、将取出的n个号签上所对应的n个…

做网站php与python商城网站建设目标

我们使用传统的Process.Start(".exe")启动进程会遇到无法打开UI界面的问题&#xff0c;尤其是我们需要进行开启自启动程序设置时出现诸多问题&#xff0c;于是我们就想到采用windows服务开机自启动来创建启动一个新的exe程序&#xff0c;并且是显式运行。 首先是打开…