Puppeteer

首先我们需要了解下Puppeteer是谷歌官方出品的一个通过DevTools协议控制headless Chrome的NodeJS库。

什么是无头浏览器?通俗点讲就是没有界面的浏览器。通过浏览器提供的API,进行调用,可以实现丰富的功能。网上有使用Puppeteer进行爬虫开发的案例。

通过无头浏览器提供的这项功能,我们可以很方便的在服务端进行开发,完成一些复杂的网页交互。

Puppeteer支持导出图片(JPG、PNG)、PDF等。

今天这里注重讲下基于Puppeteer用C#语言实现的PuppeteerSharp SDK。

PuppeteerSharp

PuppeteerSharp基于NetStandard 2.0库,最低平台版本要求是.NET Framework 4.6.1和.NET Core 2.0。

接下里,我们做一个示例程序,这里我新建一个.netcore2.0控制台应用程序,然后通过nuget添加对PuppeteerSharp的引用。

然后写一段示例程序,这里我们以“OSC”首页为例,导出PDF。

static void Main(string[] args)

{

Test().Wait();

Console.WriteLine("Hello World!");

}

static async Task Test()

{

try

{

// await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultRevision);

using (var browser = await Puppeteer.LaunchAsync(new LaunchOptions()

{

Headless = true //偵測時可設定false觀察網頁顯示結果(註:非Headless時不能匯出PDF)

}))

{

using (var page = await browser.NewPageAsync())

{

await page.GoToAsync("https://www.oschina.net/");

//透過SetViewport控制視窗大小決定抓圖尺寸

await page.SetViewportAsync(new ViewPortOptions

{

Width = 960,

Height = 1000,

IsMobile = false,

IsLandscape = false,

});

await page.WaitForTimeoutAsync(1500);

await page.PdfAsync($"D:\\FreewayTraffic\\Snapshot.pdf", new PdfOptions()

{

PrintBackground = true,

MarginOptions = new PuppeteerSharp.Media.MarginOptions()

{

Left = "20px",

Right = "20px",

Bottom = "20px",

Top = "20px",

},

Format = PuppeteerSharp.Media.PaperFormat.A4,

});

}

}

}

catch (Exception ex)

{

Console.WriteLine(ex.ToString());

throw;

}

}

首先需要注意的是:

await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultRevision);

这段代码,首次启动程序时,它会检测当前执行程序.local-chromium目录下是否有对应版本的chrome.exe,没有的话,首次会启动下载,文件大小问60MB左右。

下载完成后的目录文件如下图:

这样我们就可以启动刚开始的程序了,看看效果吧!

上面就是导出的PDF和图片。

PDF导出的效果如上。

至此,关于PuppeteerSharp的使用算是完成了。

文章来源: www.oschina.net,作者:李朝强,版权归原作者所有,如需转载,请联系作者。

原文链接:https://my.oschina.net/lichaoqiang/blog/3144467

java无头浏览器_PuppeteerSharp无头浏览器.NetSdk(Puppeteer)相关推荐

  1. selenium无头浏览器_无头Selenium浏览器

    selenium无头浏览器 重要要点 无头浏览器无需用户界面即可运行. 不再支持PhantomJS. JBrowser驱动程序是Java 8的低开销选项. 如果需要Java 11支持,所有当前的Jav ...

  2. 谷歌浏览器如何启用java小脚本_各种浏览器开启JavaScript脚本方法

    随着网站设计技术的发展,为了用户友好体验,大部分网站使用了JavaScript脚本设计,如果您的浏览器禁用或关闭的JavaScript支持,那么可能造成网站体验差或网站部分功能无法使用 下面提供10种 ...

  3. 《手把手教你》系列基础篇之(三)-java+ selenium自动化测试- 启动三大浏览器(上)(详细教程)

    1.简介 前边宏哥已经将环境搭建好了,今天就在Java项目搭建环境中简单地实践一下: 启动三大浏览器.按市场份额来说,全球前三大浏览器是:IE.Firefox.Chrome.因此宏哥这里主要介绍一下如 ...

  4. 如何通过Java下载远程文件到浏览器

    如何通过Java下载远程文件到浏览器 整体思路: 首先获取远程资源的文件输入流,使用HttpServletResponse的输出流,通过Java io转换将输入流转成输出流,写入指定文件,下载到浏览器 ...

  5. Selenium Java启动国内Chromium系浏览器360、QQ等

    Selenium Java启动国内Chromium系浏览器360.QQ等 近期有同学有需求,他们要求只能在国产浏览器如360.QQ等上进行测试. Selenuim支持谷歌Chrome浏览器我们都是知道 ...

  6. java使用selenium实现模拟浏览器操作API大全 模拟登录

    java selenium 模拟登录 模拟浏览器 API大全 (一)环境安装之Java (二)环境安装之IntelliJ IDEA (三)环境安装之Selenium 1.通过jar包安装 2.通过Ma ...

  7. java实现通过url实现浏览器下载pdf文件

    java实现通过url实现浏览器下载pdf文件 // 下载pdf文件工具类 public static void toDownload(HttpServletRequest request, Http ...

  8. java中selenium设置chrome浏览器为开发者模式与IP代理

    java中selenium设置chrome浏览器为开发者模式与IP代理 前言 代码 前言 之前为公司写了个爬虫项目,有时候为了绕过网站的反爬机制需要用到ip代理以及设置浏览器为开发者模式,看了一些se ...

  9. 【Java数据结构】通过Java理解和实现——无头双向链表

    ---------------------------------------------------------------------------------------------------- ...

  10. 浏览器中java在什么位置_win10浏览器安装位置在哪里_如何找到win10浏览器的安装路径...

    win10浏览器安装位置在哪里?win10系统的浏览器默认是Edge浏览器,该浏览器是系统自带的.有的用户想查看该浏览器的安装路径,但无从下手,不知道该如何找到.没关系,下面小编就来为大家分享关于如何 ...

最新文章

  1. js中将字符串转换成json的三种方式
  2. 使用免费的云服务 AWS EC2
  3. 打开u盘提示不在计算机中,U盘不被电脑识别怎么办 U盘在电脑上打不开解决方法...
  4. nginx redis mysql_Nginx + Lua + Kafka + Redis + Mysql
  5. Pecl和Pear的区别和联系?
  6. 如何定义适配器adapter类_【设计模式】第六篇:来康康适配器模式
  7. (7)Redis-Cluster集群理论及实践【上】
  8. 现实的复杂性与系统的复杂性
  9. 国内外优秀的设计素材网站推荐
  10. 怎么把PWM信号转为模拟量
  11. 07 给Form视图添加Chatter(学Odoo,就得Do)
  12. 关于如何发挥最好的学习状态的思考暨《自控力》一书读后感
  13. text改为longtext
  14. unity 点击UI显示3D爆炸特效
  15. 爬虫----dex2jar工具的安装与使用
  16. 预处理命令不是c语言本身的组成部分,C中的预处理命令
  17. 19张动作速写参考,人物灵活就靠这些!
  18. C练题笔记之:Leetcode-12. 整数转罗马数字
  19. spark rdd分区与任务的关系
  20. PR,ROC,AUC计算方法

热门文章

  1. vce 题库导入_PDF 题库转VCE 文件.docx
  2. 高斯积分(概率积分)以及它与伽马函数之间的关系
  3. Sitemap和网站地图在线生成工具
  4. 根服务器修改密钥,更改 SQL Server 实例的服务主密钥
  5. java电影购票系统_基于Java的电影院购票系统
  6. wifi分析仪怎么看哪个信道好_专业的WiFi检测工具有哪些?如何解决wifi信号不好?...
  7. win10cmd计算机管理界面,Win10命令提示符cmd在哪 Win10以管理员身份运行方法
  8. IT民工金鱼哥从业8年的历程与感悟
  9. android gps 获取方位_Android通过gps获取定位的位置数据和gps经纬度
  10. python水果超市管理系统流程图_项目1-水果超市管理系统-学生