环境:

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源码中设置的,或者用国内镜像

https://github.com/hardkoded/puppeteer-sharp/blob/37ea56934281209830254df3ec3ffe37c57cfac2/lib/PuppeteerSharp/BrowserFetcher.cs

将压缩包解压到当前程序目录下,文件夹路径:.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 ---

https://centos.pkgs.org/

其他库报错安装方法一样。

报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无头浏览器注意事项的更多相关文章

  1. selenium+谷歌无头浏览器爬取网易新闻国内板块

    网页分析 首先来看下要爬取的网站的页面 查看网页源代码:你会发现它是由js动态加载显示的 所以采用selenium+谷歌无头浏览器来爬取它 1 加载网站,并拖动到底,发现其还有个加载更多 2 模拟点击 ...

  2. 无头浏览器phantomJS

    selenium: 有头浏览器的代表(selenium+python也可实现静默运行 引入python的一个包,包叫:虚拟屏幕pyvirtualdisplay) PhantomJS : 无头浏览器的代 ...

  3. 基于Python, Selenium, Phantomjs无头浏览器访问页面

    引言: 在自动化测试以及爬虫领域,无头浏览器的应用场景非常广泛,本文将梳理其中的若干概念和思路,并基于代码示例其中的若干使用技巧. 1. 无头浏览器 通常大家在在打开网页的工具就是浏览器,通过界面上输 ...

  4. PhantomJS框架(初识无头浏览器)

    博主今天看到大神聊起 headless,首先我去了解了下这个概念  无头浏览器 selenium框架是有头浏览器的代表,即可看得见的浏览器 而headless browser无头浏览器,即看不见的浏览 ...

  5. Python对Selenium调用浏览器进行封装包括启用无头浏览器,及对应的浏览器配置文件

    """ 获取浏览器 打开本地浏览器 打开远程浏览器 关闭浏览器 打开网址 最大化 最小化 标题 url 刷新 Python对Selenium封装浏览器调用 ------b ...

  6. 爬虫之 图片懒加载, selenium , phantomJs, 谷歌无头浏览器

    一.图片懒加载 懒加载 :    JS 代码  是页面自然滚动    window.scrollTo(0,document.body.scrollHeight)   (重点) bro.execute_ ...

  7. Selenium 启动无头浏览器,只有chrome 和 firefox的,没有IE

    使用无头浏览器,可以避免掉不确定的弹出框对脚本稳定性的影响,还能在脚本执行过程中省略掉了css 加载的时间. 以下是Selenium 启动无头浏览器的方法,只有chrome 和 firefox的. p ...

  8. 浏览器控制之 selenium,phantomJs谷无头浏览器

    目录 浏览器控制之 selenium,phantomJs谷无头浏览器 selenium phantomJs 需求是尽可能多的爬取豆瓣网中的电影信息 谷歌无头浏览器 浏览器控制之 selenium,ph ...

  9. 07-selenium、PhantomJS(无头浏览器)

    selenium(自动化测试工具可用于在爬虫中解决js动态加载问题) 简介(本质就是模仿浏览器工作) Selenium 是什么?一句话,自动化测试工具.它支持各种浏览器,包括 Chrome,Safar ...

随机推荐

  1. drop、truncate、delete功能介绍和三者间区别

    一.delete 1.delete是DML,执行delete操作时,每次从表中删除一行,并且同时将该行的的删除操作记录在redo和undo表空间中以便进行回滚(rollback)和重做操作,但要注意表 ...

  2. Enumerable 下又有新的扩展方法啦,快来一起一睹为快吧

    一:背景 1. 讲故事 前段时间将公司的一个项目从 4.5 升级到了 framework 4.8 ,编码的时候发现 Enumerable 中多了三个扩展方法: Append, Prepend, ToH ...

  3. Git常用命令参考手册

    配置 # 查看全局配置列表 git config -l # 查看局部配置列表 git config --local --list # 查看已设置的全局用户名/邮箱 git config --globa ...

  4. AdblockPlus自定义屏蔽广告

    AdblockPlus自定义屏蔽广告我推荐使用两种方法: 1. 使用CSS选择器 2. 使用样式选择器 屏蔽广告中,重要的一个问题就是识别广告. 我们要自己编写屏蔽就得将广告选出来,告诉Adblock ...

  5. PYTHON-错误-函数有返回值未接收导致替换不成功

    #1.有返回值,没有赋值,替换不成功 cxj = 'guapi' cxj.replace(cxj,'2b') print(cxj) #2.有返回值,赋值,替换成功 cxj = 'guapi' cxj ...

  6. 第3篇 Scrum 冲刺博客(专✌️团队)

    目录 一.站立式会议 1.1 会议照片 1.2 成员完成情况 二.项目燃尽图 三.成员代码/文档签入记录 3.1 代码签入 3.2 Issue链接 3.3 CodeReview代码规范文档 四.最新项 ...

  7. ReplayingDecoder 解码器:别以为我有多厉害,也只不过是使用了一下装饰器模式而已~

    原文地址 一.设计模式为啥老是用不好? 想要写出更屌的代码,提高代码的健壮性和可扩展性,那么设计模式可谓是必学的技能. 关于学习设计模式,大家可能都觉得设计模式的概念太过于抽象,理解起来有点费劲:又或 ...

  8. 方差分析、T检验、卡方分析如何区分?

    差异研究的目的在于比较两组数据或多组数据之间的差异,通常包括以下几类分析方法,分别是方差分析.T检验和卡方检验. 三个方法的区别 其实核心的区别在于:数据类型不一样.如果是定类和定类,此时应该使用卡方 ...

  9. Asp.net Core启动流程讲解(四)

    Asp.net Core内 DI(DependencyInjection)贯穿了项目的始终,要学习Asp.net Core就无法越过DI. 下面讲解一下DI在Asp.Net Core内的流程 asp. ...

  10. vue cli3如何引入全局less变量

    最近在项目中需要写一个全局的style.less,然后在各组件中可以直接调用: 1.在assets下创建一个less文件: 2.安装style-resources-loader (npm i styl ...