假如没有装置能够先装置一下,在.BackgroundJobs层装置PuppeteerSharp:Install-Package PuppeteerSharp
在Jobs文件夹下新建一个PuppeteerTestJob.cs,继承IBackgroundJob,同样是在ExecuteAsync()办法中执行操作。
<code-box id=“bfPpzQ” style=“padding: 0px; margin: 10px 0px; color: rgb(34, 34, 34); font-family: -apple-system, “SF UI Text”, Arial, “PingFang SC”, “Hiragino Sans GB”, “Microsoft YaHei”, “WenQuanYi Micro Hei”, sans-serif; font-size: 15.5px; background-color: rgba(255, 255, 255, 0.9); position: relative; display: block;”>
//PuppeteerTestJob.cs
using System;
using System.Threading.Tasks;
namespace Meowv.Blog.BackgroundJobs.Jobs.PuppeteerTest
{
public class PuppeteerTestJob : IBackgroundJob
{
public async Task ExecuteAsync()
{
throw new NotImplementedException();
}
}
}
运用 await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultRevision); 第一次检测到没有阅读器文件会默许帮我们下载 chromium 阅读器。
DownloadAsync(…)能够指定 Chromium 版本,BrowserFetcher.DefaultRevision 下载当前默许最稳定的版本。
然后配置阅读器启动的方式。
<code-box id=“GbXZ4i” style=“padding: 0px; margin: 10px 0px; color: rgb(34, 34, 34); font-family: -apple-system, “SF UI Text”, Arial, “PingFang SC”, “Hiragino Sans GB”, “Microsoft YaHei”, “WenQuanYi Micro Hei”, sans-serif; font-size: 15.5px; background-color: rgba(255, 255, 255, 0.9); position: relative; display: block;”>
using var browser = await Puppeteer.LaunchAsync(new LaunchOptions
{
Headless = true,
Args = new string[] { “–no-sandbox” }
});
感兴味的能够本人看看LaunchOptions有哪些参数,我这里指定了Headless = true 以无头形式运转阅读器,然后加了一个启动参数 “–no-sandbox”。针对Linux环境下,假如是运转在 root 权限下,在启动 Puppeteer 时要添加 “–no-sandbox” 参数,否则 Chromium 会启动失败。
我们翻开一个异步加载的网页,然后获取到页面加载完后的HTML,以我个人博客中的某个单页为例:https://meowv.com/wallpaper 。
<code-box id=“zim3JJ” style=“padding: 0px; margin: 10px 0px; color: rgb(34, 34, 34); font-family: -apple-system, “SF UI Text”, Arial, “PingFang SC”, “Hiragino Sans GB”, “Microsoft YaHei”, “WenQuanYi Micro Hei”, sans-serif; font-size: 15.5px; background-color: rgba(255, 255, 255, 0.9); position: relative; display: block;”>
//PuppeteerTestJob.cs
using PuppeteerSharp;
using System.Threading.Tasks;
namespace Meowv.Blog.BackgroundJobs.Jobs.PuppeteerTest
{
public class PuppeteerTestJob : IBackgroundJob
{
public async Task ExecuteAsync()
{