请您耐心阅读我的回答。
Puppeteer环境搭建的详细步骤
1. 安装Node.js
官方下载地址:https://nodejs.org
Puppeteer是基于Node.js开发的,因此要使用Puppeteer,必须先安装Node.js。下载安装完毕后,在命令行窗口中输入以下命令,检查是否安装成功:
node -v
若能正确输出Node.js的版本号,则说明安装成功。
2. 安装Puppeteer
在命令行窗口中输入以下命令,即可安装Puppeteer:
npm install puppeteer
3. 常见问题及解决方法
3.1 安装Puppeteer时下载缓慢
解决方法:
方案1
找到npm的全局配置文件 .npmrc(没有则新建),加入如下内容:
registry=https://registry.npm.taobao.org
保存退出后,再重新输入安装命令即可。
方案2
使用cnpm(淘宝npm)安装,命令如下:
cnpm install puppeteer
3.2 Puppeteer启动时报错
由于Puppeteer需要启动Chrome浏览器,因此在启动时可能会报错。常见错误如下:
3.2.1 命令行窗口提示Chrome相关文件未找到
解决方法:
安装所需的依赖,命令如下:
sudo apt-get install libx11-dev libxcomposite-dev libxcursor-dev libxdamage-dev libxext-dev libxi-dev libxtst-dev libnss3-dev libcups2-dev libatk-bridge2.0-dev libgtk-3-dev libgconf-2-4 libasound2-dev libpangocairo-1.0-0
3.2.2 命令行窗口提示Chrome需要更新
解决方法:
升级所需的依赖,命令如下:
sudo apt-get update && sudo apt-get install -y libxss1 libappindicator1 libindicator7 libx11-xcb-dev libgtk-3-0 libatk-bridge2.0-0 libasound2 libnss3 xdg-utils fonts-liberation libgbm-dev
3.3 Puppeteer启动的Chrome浏览器未启用JavaScript
解决方法:
启动Chrome浏览器时,添加 --enable-features=NetworkService
参数,命令如下:
const browser = await puppeteer.launch({
args: ['--enable-features=NetworkService']
});
示例
示例1:截取网页截图
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
const url = 'http://baidu.com';
await page.goto(url, {waitUntil: 'networkidle2'});
await page.screenshot({path: 'baidu.png'});
await browser.close();
})();
上述代码用Puppeteer打开百度网站,等待页面加载完毕后,截取页面截图并保存为baidu.png。
示例2:获取百度搜索结果
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
const url = 'https://www.baidu.com/s?ie=UTF-8&wd=puppeteer';
await page.goto(url, {waitUntil: 'networkidle2'});
const results = await page.$$('.result.c-container');
for (let i = 0; i < results.length; i++) {
let text = await page.evaluate(el => el.textContent, results[i]);
console.log(text);
console.log('----------------------');
}
await browser.close();
})();
上述代码用Puppeteer打开百度搜索Puppeteer的结果页,获取所有搜索结果,并将搜索结果的文字信息输出到控制台。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Puppeteer环境搭建的详细步骤 - Python技术站