JS使用Puppeteer自动化进行浏览器操作记录,js执行py脚本

49 篇文章 2 订阅
23 篇文章 0 订阅

一、依赖

# 当你安装 Puppeteer 时,它会下载最新版本的Chromium,以保证可以使用 API。
npm i puppeteer

二、网页截图

  • 加载完页面后,对页面进行截图方法screenshot()
  • 基本截图
const puppeteer = require('puppeteer');
// 网页截图
async function getPic() {
  /**
   * 用于启动 puppeteer,
   * 实质上打开了一个 Chrome 的实例,然后将这个实例对象赋给变量 browser。
   */
  const browser = await puppeteer.launch();
  // 在浏览器实例中新建一个页面,等到返回将页面对象赋给page
  const page = await browser.newPage();
  // 用它来加载我们给的 URL 地址,等待页面加载完毕
  await page.goto('https://blog.csdn.net/weixin_46037781');
  await page.screenshot({path: './static/my-csdn.png'});

  await browser.close();
}

getPic();
  • 全屏截图
  • 参数fullPage:true
const puppeteer = require('puppeteer');
// 网页截图
async function getPic() {
  /**
   * 用于启动 puppeteer,
   * 实质上打开了一个 Chrome 的实例,然后将这个实例对象赋给变量 browser。
   */
  const browser = await puppeteer.launch();
  // 在浏览器实例中新建一个页面,等到返回将页面对象赋给page
  const page = await browser.newPage();
  // 用它来加载我们给的 URL 地址,等待页面加载完毕
  await page.goto('https://blog.csdn.net/weixin_46037781');
  await page.screenshot({path: './static/my-csdn.png', fullPage:true});

  await browser.close();
}

getPic();

在这里插入图片描述

三、生成PDF

  • pdf()
const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();
  await page.goto('https://blog.csdn.net/weixin_46037781', {waitUntil: 'networkidle2'});
  await page.pdf({path: './static/csdn.pdf', format: 'A4'});

  await browser.close();
})();

四、自动化操作

自动CSDN

const puppeteer = require('puppeteer');

(async () => {
 // 启动浏览器
const browser = await puppeteer.launch({
  // 关闭无头模式,方便我们看到这个无头浏览器执行的过程
  headless: false,
  defaultViewport: { width: 1536, height: 722 }, // 浏览器宽高
  args: ['--start-maximized']
});
// 浏览器宽高获取
// console.log(window.innerWidth, window.innerHeight);
// 打开空白页面
const page = await browser.newPage();
await page.goto('https://blog.csdn.net/weixin_46037781', {waitUntil: 'networkidle2'}); // 等待网络状态为空闲的时候才继续执行
await page.type('#toolbar-search-input', '自动化', {delay: 300}); // delay输入间隔
await page.keyboard.press('Enter');
// await browser.close();
})();

五、通过脚本方法截取指定元素的图

const puppeteer = require('puppeteer');
// 网页截图
async function getPic() {
  /**
   * 用于启动 puppeteer,
   * 实质上打开了一个 Chrome 的实例,然后将这个实例对象赋给变量 browser。
   */
  const browser = await puppeteer.launch();
  // 在浏览器实例中新建一个页面,等到返回将页面对象赋给page
  const page = await browser.newPage();
  // 用它来加载我们给的 URL 地址,等待页面加载完毕
  await page.goto('https://blog.csdn.net/weixin_46037781');
  let clip = await page.evaluate(() => {
    let {
        x,
        y,
        width,
        height
    } = document.getElementsByClassName('navList-box')[0].getBoundingClientRect();
    return {
        x,
        y,
        width,
        height
    };
});
  await page.screenshot({path: './static/list-csdn.png', clip: clip});

  await browser.close();
}

getPic();

在这里插入图片描述

六、扩展

js执行py脚本

// execSync同步执行,exec异步执行
const execSync = require('child_process').execSync;
const output = execSync('python D:\\.mygitee\\my-py\\读取网站内容.py')
console.log('sync: ' + output.toString())
console.log('over')
  • 读取网站内容.py
from urllib.request import urlopen

myURL = urlopen("https://www.runoob.com/")
print(myURL.read(300))
# 读取内容长度300

Puppeteer中文API文档

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值