java无头浏览器_PuppeteerSharp无头浏览器.Net Sdk(Puppeteer)
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)相关推荐
- selenium无头浏览器_无头Selenium浏览器
selenium无头浏览器 重要要点 无头浏览器无需用户界面即可运行. 不再支持PhantomJS. JBrowser驱动程序是Java 8的低开销选项. 如果需要Java 11支持,所有当前的Jav ...
- 谷歌浏览器如何启用java小脚本_各种浏览器开启JavaScript脚本方法
随着网站设计技术的发展,为了用户友好体验,大部分网站使用了JavaScript脚本设计,如果您的浏览器禁用或关闭的JavaScript支持,那么可能造成网站体验差或网站部分功能无法使用 下面提供10种 ...
- 《手把手教你》系列基础篇之(三)-java+ selenium自动化测试- 启动三大浏览器(上)(详细教程)
1.简介 前边宏哥已经将环境搭建好了,今天就在Java项目搭建环境中简单地实践一下: 启动三大浏览器.按市场份额来说,全球前三大浏览器是:IE.Firefox.Chrome.因此宏哥这里主要介绍一下如 ...
- 如何通过Java下载远程文件到浏览器
如何通过Java下载远程文件到浏览器 整体思路: 首先获取远程资源的文件输入流,使用HttpServletResponse的输出流,通过Java io转换将输入流转成输出流,写入指定文件,下载到浏览器 ...
- Selenium Java启动国内Chromium系浏览器360、QQ等
Selenium Java启动国内Chromium系浏览器360.QQ等 近期有同学有需求,他们要求只能在国产浏览器如360.QQ等上进行测试. Selenuim支持谷歌Chrome浏览器我们都是知道 ...
- java使用selenium实现模拟浏览器操作API大全 模拟登录
java selenium 模拟登录 模拟浏览器 API大全 (一)环境安装之Java (二)环境安装之IntelliJ IDEA (三)环境安装之Selenium 1.通过jar包安装 2.通过Ma ...
- java实现通过url实现浏览器下载pdf文件
java实现通过url实现浏览器下载pdf文件 // 下载pdf文件工具类 public static void toDownload(HttpServletRequest request, Http ...
- java中selenium设置chrome浏览器为开发者模式与IP代理
java中selenium设置chrome浏览器为开发者模式与IP代理 前言 代码 前言 之前为公司写了个爬虫项目,有时候为了绕过网站的反爬机制需要用到ip代理以及设置浏览器为开发者模式,看了一些se ...
- 【Java数据结构】通过Java理解和实现——无头双向链表
---------------------------------------------------------------------------------------------------- ...
- 浏览器中java在什么位置_win10浏览器安装位置在哪里_如何找到win10浏览器的安装路径...
win10浏览器安装位置在哪里?win10系统的浏览器默认是Edge浏览器,该浏览器是系统自带的.有的用户想查看该浏览器的安装路径,但无从下手,不知道该如何找到.没关系,下面小编就来为大家分享关于如何 ...
最新文章
- 如何签出远程Git分支?
- keil5函数 默认返回值_C++的返回值return
- mysql8.0.22 win7_ArcGIS10.8地理信息软件中英文版安装教程
- SAP Spartacus PersistFocus Directive是采取怎样的数据结构来存储focus信息的
- matlab arctan 反函数,arctanx的导数是什么 反函数求导公式
- 常用的密码破解方法大汇总
- STK Component Insight3D控件-WPF方式
- 小甲鱼python飞机大战素材_用Python做飞机大战(含素材)
- matlab构造跟驰模型,基于跟驰模型的交通流混沌研究
- 高斯函数、高斯积分和正态分布
- 罗技无线键盘Windows和Ubuntu下锁定Fn键方法
- Android 版本统一管理
- 《东周列国志》第三十六回 晋吕郤夜焚公宫 秦穆公再平晋乱
- linux设备i2c优先级,Linux设备之I2C
- OSChina 周一乱弹 —— 今天下班带你去放松咧
- 文献阅读 | 利用体细胞的mtDNA的突变追踪细胞的分化命运
- ST7703 LCM显示屏调试--基于MT6765
- 解决QQ不能下载文件的问题
- 凯迪拉克5月软文-V设计
- Unity中一些小技巧
热门文章
- 使用Loadrunner进行性能测试
- html滑动验证到最右边,jQuery滑块拖动到最右边验证插件
- 2.6 数值分析: 追赶法
- 希尔伯特(Hilbert)空间
- 简单Android app开发_个人如何开发手机app?做个app需要的技术?最简单app制作流程...
- BUUCTF-Misc-No.3
- html静态网页实例二(附完整代码)
- python画正切函数_Python
- html轮播图代码自适应,【简易轮播代码】自适应全屏轮播banner图切换代码
- 笔记 -- Maxwell软件仿真