puppeteer自动化及爬虫:连接现有谷歌浏览器、新建窗口
1)安装puppeteer官方文档:https://zhaoqize.github.io/puppeteer-api-zh_CN/#/知乎教程:https://zhuanlan.zhihu.com/p/66296309# 1.仅安装核心,然后用chrome运行,不下载Chromium 【建议方式】cnpm i puppeteer-core# or "yarn add puppeteer-core"
·
1)安装puppeteer
官方文档:https://zhaoqize.github.io/puppeteer-api-zh_CN/#/
知乎教程:https://zhuanlan.zhihu.com/p/66296309
# 1.仅安装核心,然后用chrome运行,不下载Chromium 【建议方式】
cnpm i puppeteer-core
# or "yarn add puppeteer-core"
# 2.下载完整版本,含chromium,速度慢
npm i puppeteer
# or "yarn add puppeteer"
2)连接现有谷歌
准备:先复制一个谷歌快捷方式,右键——属性——在目标的chrome.exe 后加上 --remote-debugging-port=9222
再点开此快捷方式运行谷歌浏览器
最后再运行如下脚本 node demo.js
是否配置成功可在浏览器运行成功后在地址栏访问:http://127.0.0.1:9222/json/version
可看到:
{
"Browser": "Chrome/89.0.4389.114",
"Protocol-Version": "1.3",
"User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36",
"V8-Version": "8.9.255.24",
"WebKit-Version": "537.36 (@1ea76e193b4fadb723bfea2a19a66c93a1bc0ca6)",
"webSocketDebuggerUrl": "ws://127.0.0.1:9222/devtools/browser/f8782d9c-69c9-4fd1-8691-0dc731617c92"
}
连接现有浏览器实例:connect.js
const puppeteer = require('puppeteer-core');
let request = require('request-promise-native');
/*使用 puppeteer.connect 连接一个已经存在的 Chrome 实例
先复制一个谷歌快捷方式,右键——属性——目标的chrome.exe 后加上 --remote-debugging-port=9222
再点开此快捷方式运行谷歌浏览器
*/
(async () => {
//通过 9222 端口的 http 接口获取对应的 websocketUrl
let version = await request({
uri: "http://127.0.0.1:9222/json/version",
json: true
});
//直接连接已经存在的 Chrome
let browser = await puppeteer.connect({
browserWSEndpoint: version.webSocketDebuggerUrl
});
const page = await browser.newPage(); //初始化页面
await page.goto('https://www.baidu.com'); //打开网址
await page.screenshot({path: 'baidu.png'}); //截图
// await page.close();
// await browser.disconnect();
})();
3)新建一个空谷歌窗口运行
//使用 puppeteer.launch 启动 Chrome
(async () => {
const browser = await puppeteer.launch({
headless: false, //有浏览器界面启动
executablePath: 'C:\\Users\\Administrator\\AppData\\Local\\Google\\Chrome\\Application\\chrome.exe',
slowMo: 100, //放慢浏览器执行速度,方便测试观察
args: [ //启动 Chrome 的参数,详见上文中的介绍
'–no-sandbox',
'--window-size=1280,960'
],
});
const page = await browser.newPage();
await page.goto('https://www.baidu.com');
await page.close();
await browser.close();
})();
更多推荐


所有评论(0)