CentOS 7使用PuppeteerSharp无头浏览器注意事项
环境:
CentOS 7.6.1810
.net core 3.1
PuppeteerSharp 2.0.0
1.如网络部稳定可以提前下载需要的chromium
下载地址:https://storage.googleapis.com/chromium-browser-snapshots/Linux_x64/706915/chrome-linux.zip
各个系统下载地址可以查看PuppeteerSharp源码中设置的,或者用国内镜像
将压缩包解压到当前程序目录下,文件夹路径:.local-chromium/Linux-706915/chrome-linux/
如运行报错:加载libX11.so.6库错误,则先装该库
Unhandled exception. System.AggregateException: One or more errors occurred. (Failed to launch Chromium! /PuppeteerTest/PuppeteerTest/.local-chromium/Linux-/chrome-linux/chrome: error while loading shared libraries: libX11.so.: cannot open shared object file: No such file or directory
)
---> PuppeteerSharp.ChromiumProcessException: Failed to launch Chromium! /PuppeteerTest/PuppeteerTest/.local-chromium/Linux-/chrome-linux/chrome: error while loading shared libraries: libX11.so.: cannot open shared object file: No such file or directory at PuppeteerSharp.ChromiumProcess.State.StartingState.StartCoreAsync(ChromiumProcess p)
at PuppeteerSharp.ChromiumProcess.State.StartingState.StartCoreAsync(ChromiumProcess p)
at PuppeteerSharp.Launcher.LaunchAsync(LaunchOptions options)
at PuppeteerSharp.Launcher.LaunchAsync(LaunchOptions options)
--- End of inner exception stack trace ---
从pkgs网站找到该库 https://pkgs.org/download/libX11.so.6
进入该库
https://centos.pkgs.org/7/centos-x86_64/libX11-1.6.7-2.el7.i686.rpm.html
找到yum安装命令:
Install libX11 rpm package: # yum install libX11
在Xshell执行该命令
其他库报错,如libXcomposite库,则一样到pkgs网站查找库和安装命令
Unhandled exception. System.AggregateException: One or more errors occurred. (Failed to launch Chromium! /PuppeteerTest/PuppeteerTest/bin/Debug/netcoreapp3./.local-chromium/Linux-/chrome-linux/chrome: error while loading shared libraries: libXcomposite.so.: cannot open shared object file: No such file or directory
)
---> PuppeteerSharp.ChromiumProcessException: Failed to launch Chromium! /PuppeteerTest/PuppeteerTest/bin/Debug/netcoreapp3./.local-chromium/Linux-/chrome-linux/chrome: error while loading shared libraries: libXcomposite.so.: cannot open shared object file: No such file or directory at PuppeteerSharp.ChromiumProcess.State.StartingState.StartCoreAsync(ChromiumProcess p)
at PuppeteerSharp.ChromiumProcess.State.StartingState.StartCoreAsync(ChromiumProcess p)
at PuppeteerSharp.Launcher.LaunchAsync(LaunchOptions options)
at PuppeteerSharp.Launcher.LaunchAsync(LaunchOptions options)
--- End of inner exception stack trace ---
其他库报错安装方法一样。
报libXss.so.1这个库错误的时候,运行命令:
yum install libXss* -y
报libatk-1.0.so库错误运行命令:
yum install atk
报libatk-bridge-2.0.so库错误运行命令:
yum install at-spi2-atk-devel
报libpangocairo-1.0.so库错误运行命令:
yum install pango-devel
报libgtk-3.so库错误运行命令:
yum install gtk3-devel
Pupperteer官网可以查到CentOS的相关依赖
https://github.com/puppeteer/puppeteer/blob/master/docs/troubleshooting.md
全部依赖都安装好后,运行还是报错:--no-sandbox
Unhandled exception. System.AggregateException: One or more errors occurred. (Failed to launch Chromium! [/165456.543755:ERROR:zygote_host_impl_linux.cc()] Running as root without --no-sandbox is not supported. See https://crbug.com/638180.
)
---> PuppeteerSharp.ChromiumProcessException: Failed to launch Chromium! [/165456.543755:ERROR:zygote_host_impl_linux.cc()] Running as root without --no-sandbox is not supported. See https://crbug.com/638180. at PuppeteerSharp.ChromiumProcess.State.StartingState.StartCoreAsync(ChromiumProcess p)
at PuppeteerSharp.ChromiumProcess.State.StartingState.StartCoreAsync(ChromiumProcess p)
at PuppeteerSharp.Launcher.LaunchAsync(LaunchOptions options)
at PuppeteerSharp.Launcher.LaunchAsync(LaunchOptions options)
--- End of inner exception stack trace ---
根据网上的一篇文章,启动的时候需要加上--no-sandbox参数
https://segmentfault.com/a/1190000018553178
var launchOptions = new LaunchOptions
{
Headless = true
};
launchOptions.Args = new string[] {
"--no-sandbox"
};
var browser = Puppeteer.LaunchAsync(launchOptions).Result;
重新启动下程序,已经可以抓取网页了。
CentOS 7使用PuppeteerSharp无头浏览器注意事项的更多相关文章
- selenium+谷歌无头浏览器爬取网易新闻国内板块
网页分析 首先来看下要爬取的网站的页面 查看网页源代码:你会发现它是由js动态加载显示的 所以采用selenium+谷歌无头浏览器来爬取它 1 加载网站,并拖动到底,发现其还有个加载更多 2 模拟点击 ...
- 无头浏览器phantomJS
selenium: 有头浏览器的代表(selenium+python也可实现静默运行 引入python的一个包,包叫:虚拟屏幕pyvirtualdisplay) PhantomJS : 无头浏览器的代 ...
- 基于Python, Selenium, Phantomjs无头浏览器访问页面
引言: 在自动化测试以及爬虫领域,无头浏览器的应用场景非常广泛,本文将梳理其中的若干概念和思路,并基于代码示例其中的若干使用技巧. 1. 无头浏览器 通常大家在在打开网页的工具就是浏览器,通过界面上输 ...
- PhantomJS框架(初识无头浏览器)
博主今天看到大神聊起 headless,首先我去了解了下这个概念 无头浏览器 selenium框架是有头浏览器的代表,即可看得见的浏览器 而headless browser无头浏览器,即看不见的浏览 ...
- Python对Selenium调用浏览器进行封装包括启用无头浏览器,及对应的浏览器配置文件
""" 获取浏览器 打开本地浏览器 打开远程浏览器 关闭浏览器 打开网址 最大化 最小化 标题 url 刷新 Python对Selenium封装浏览器调用 ------b ...
- 爬虫之 图片懒加载, selenium , phantomJs, 谷歌无头浏览器
一.图片懒加载 懒加载 : JS 代码 是页面自然滚动 window.scrollTo(0,document.body.scrollHeight) (重点) bro.execute_ ...
- Selenium 启动无头浏览器,只有chrome 和 firefox的,没有IE
使用无头浏览器,可以避免掉不确定的弹出框对脚本稳定性的影响,还能在脚本执行过程中省略掉了css 加载的时间. 以下是Selenium 启动无头浏览器的方法,只有chrome 和 firefox的. p ...
- 浏览器控制之 selenium,phantomJs谷无头浏览器
目录 浏览器控制之 selenium,phantomJs谷无头浏览器 selenium phantomJs 需求是尽可能多的爬取豆瓣网中的电影信息 谷歌无头浏览器 浏览器控制之 selenium,ph ...
- 07-selenium、PhantomJS(无头浏览器)
selenium(自动化测试工具可用于在爬虫中解决js动态加载问题) 简介(本质就是模仿浏览器工作) Selenium 是什么?一句话,自动化测试工具.它支持各种浏览器,包括 Chrome,Safar ...
随机推荐
- Goland 生成可执行文件
Goland通过调用go build 生成可执行文件. 默认Goland是可以执行程序,但你找不到可执行文件. 你需要自定义配置文件. 创建go build配置文件 Run kind 选Directo ...
- Docker: docker pull, wget, curl, git clone 等如何更快?
1) Docker 配置 1.1) daemon.json 配置镜像 路径: /etc/docker/daemon.json 文档: Config Daemon registry-mirrors 设定 ...
- 对java程序员来说时间格式永远让人挠头来看Java Date Time 教程-时间测量
在Java中,用System.currentTimeMillis()来测量时间最方便. 你要做的是在某些操作之前获取到时间,然后在这些操作之后你想要测量时间,算出时间差.下面是一个例子: long s ...
- python 11 类与对象
给大家介绍对象hhhh 封装 举个例子,把乱七八糟的数据仍到列表,数据层面的封装 把常用的代码打包成一个函数,封装 外观特征(静态) 能做什么(动态) 对象=属性(静态) + 方法(动态) 1.方法多 ...
- StructuredStreaming(New)
SparkStreaming API using DataSets and DataFrames (New) 使用流式DataSets和流式DataFrames的API ◆ 1.创建流式DataFr ...
- Robot Framework(1)——环境搭建及安装
一.了解Robot Framework Robot Framework不是一个测试工具,准确来说,它是一个自动化测试框架,或者说它是一个自动化测试平台 特性如下: 1.支持关键字驱动.数据驱动和行为驱 ...
- Windows10 上的国产锁屏广告?
不知从什么时候开始,我的笔记本(Windows 10 Home,联想X1)在开机.锁屏时都会显示一些国产的“公益广告”(可惜不能截屏),有时是关于时令节气,有时是一些鸡汤短句,有时节假日则是叫我爱党爱 ...
- 重拾Java Web应用的基础体系结构
目录 一.背景 二.Web应用 2.1 HTML 2.2 HTTP 2.3 URL 2.4 Servlet 2.4.1 编写第一个Servlet程序 2.5 JSP 2.6 容器 2.7 URL映射到 ...
- Kubernetes入门(二)——Dashboard 安装
Kubernetes集群搭建完成后,可以通过命令行方式可以了解集群资源的使用情况,但是这种方式比较笨拙且不直观,因此考虑给集群安装Dashboard,这样能更直观了解集群状态.本文Dashboard的 ...
- node_第三方包下载文件package.jon详解
配置原因第三方包的体积过大,不方便团队成员之间共享项目源代码共享时剔除node_modules 快速创建 package.json(只能在英文的目录下成功运行) npm init -y npm i 一 ...