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的使用算是完成了。

java无头浏览器_PuppeteerSharp无头浏览器.Net Sdk(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. 如何签出远程Git分支?
  2. keil5函数 默认返回值_C++的返回值return
  3. mysql8.0.22 win7_ArcGIS10.8地理信息软件中英文版安装教程
  4. SAP Spartacus PersistFocus Directive是采取怎样的数据结构来存储focus信息的
  5. matlab arctan 反函数,arctanx的导数是什么 反函数求导公式
  6. 常用的密码破解方法大汇总
  7. STK Component Insight3D控件-WPF方式
  8. 小甲鱼python飞机大战素材_用Python做飞机大战(含素材)
  9. matlab构造跟驰模型,基于跟驰模型的交通流混沌研究
  10. 高斯函数、高斯积分和正态分布
  11. 罗技无线键盘Windows和Ubuntu下锁定Fn键方法
  12. Android 版本统一管理
  13. 《东周列国志》第三十六回 晋吕郤夜焚公宫 秦穆公再平晋乱
  14. linux设备i2c优先级,Linux设备之I2C
  15. OSChina 周一乱弹 —— 今天下班带你去放松咧
  16. 文献阅读 | 利用体细胞的mtDNA的突变追踪细胞的分化命运
  17. ST7703 LCM显示屏调试--基于MT6765
  18. 解决QQ不能下载文件的问题
  19. 凯迪拉克5月软文-V设计
  20. Unity中一些小技巧

热门文章

  1. 使用Loadrunner进行性能测试
  2. html滑动验证到最右边,jQuery滑块拖动到最右边验证插件
  3. 2.6 数值分析: 追赶法
  4. 希尔伯特(Hilbert)空间
  5. 简单Android app开发_个人如何开发手机app?做个app需要的技术?最简单app制作流程...
  6. BUUCTF-Misc-No.3
  7. html静态网页实例二(附完整代码)
  8. python画正切函数_Python
  9. html轮播图代码自适应,【简易轮播代码】自适应全屏轮播banner图切换代码
  10. 笔记 -- Maxwell软件仿真