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

宜春企业网站的建设免费自助小型网站

宜春企业网站的建设,免费自助小型网站,网页版视频如何下载,做外销网站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.hkea.cn/news/14273500/

相关文章:

  • 响应式网站建站互联网推广开户
  • 微信网站怎么做下载附件建设摩托车官方网站
  • 如何用手机网站做淘宝客聊城做移动网站服务
  • 免费企业网络推广网站建设注册中心网站
  • 达人室内设计网站企业专业搜索引擎优化
  • 企业门户网站制作专门做985招聘信息的网站
  • 新网站的建设工作周口市做网站
  • 网站后台更新前台更新不建设公益网站多少钱
  • 安阳市建设工程招标投标协会网站缙云建设局网站
  • 深圳网站建设易佰讯app 网站平台建设实施方案
  • 企业网站开发一般多少钱在哪个网站上面可以接项目做
  • 大连网站建设仟亿长春网站建设5219
  • 郑州网站推广优化外包公司建立手机网站
  • 服装加盟的网站建设中国建筑网官网查询资质
  • 关于政协 网站建设制作商城小程序费用
  • 做网站需要什么开发语言上海网站建设价
  • 网站建设建设公司有哪些网站的备案编号
  • seo教程技术整站优化谷秋精品课程网站建设软件
  • 做文化墙的网站写微信小程序需要什么软件
  • 兰州财经大学网站开发与维护柳市网站托管
  • 中山如何制作网站计算机前端好找工作吗
  • 建站公司郑州江西宜春市城市建设档案馆网站
  • 蜗牛星际做网站专业的seo网站优化公司
  • 如何做优化网站排名资源下载wordpress
  • 手机版网站建设网上网站建设教程
  • 旅游电子商务网站建设的重要性公司宣传册设计模板
  • 网站规划书500字淘宝运营培训班学费大概多少
  • 图片展示网站学校建设外文网站情况
  • 网站开发语言html无锡新吴区建设局网站
  • 北京工程建设交易中心网站卢松松网站模板