PuppeteerSharp介紹可以看這篇文章:PuppeteerSharp: 更友好的 Headless Chrome C# API
PuppeteerSharp的github地址:https://github.com/hardkoded/puppeteer-sharp
我這邊主要是記錄一下安裝使用時遇到的一些問題
開發環境
win7 64位
vs2017
netcore2.2
nuget安裝PuppeteerSharp:Install-Package PuppeteerSharp -Version 2.0.3
做什么
以下是demo代碼,一個簡單的把網頁轉為pdf文件代碼

using System; using System.Threading.Tasks; using PuppeteerSharp; namespace PuppeteerSharpDemo { class Program { static void Main(string[] args) { var d = Task.Run(async () => { await Executed(); }); d.Wait(); Console.WriteLine("ok"); Console.ReadKey(); } async static Task Executed() { var outputFile = Environment.CurrentDirectory + "\\test\\123.pdf"; //問題就在這里 var result = await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultRevision); var browser = await Puppeteer.LaunchAsync(new LaunchOptions { Headless = true }); var page = await browser.NewPageAsync(); await page.GoToAsync("http://baidu.com/"); await page.PdfAsync(outputFile); } } }
掉坑
當執行到以下這行代碼時,會從網絡上下載瀏覽器便捷式安裝包download-Win64-706915.zip到你本地,但是代碼執行到這里就拋出異常了,引發的異常:“System.Net.WebException”
var result = await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultRevision);
然后在程序的當前文件夾中有一個.local-chromium目錄,里面有個空的download-Win64-706915.zip
爬坑
0.折騰多次無果后,github查看它的源代碼,在BrowserFetcher這個類里面有一個DownloadAsync方法,可以查看到完整的下載邏輯代碼,具體去看看源碼
1.請求https://storage.googleapis.com這個地方去下載,國內估計被牆了
2.下載完成解壓出來
填坑
知道問題在哪里,那么下面就是怎么解決了
0.自己去下載chromium包,自己解壓,根據local-chromium目錄的空download-Win64-706915.zip可以知道,我們要下載的win 64位的706915版本的chromium包
1.chromium包(根據自己的情況去找),下載地址:https://mirrors.huaweicloud.com/chromium-browser-snapshots/
2.解壓下載好的zip壓縮包,注意需要在local-chromium目錄下,自己先創建一個Win64-706915目錄
后記
到此就完成了,可以正常運行了,我是這樣自己解決這個問題。當然BrowserFetcher這個類中有兩個構造函數,您可以使用帶參數的構造函數,自己傳入DownloadHost,這個需要您自己研究如何做。
最后希望可以給到正在爬此坑的猿們一些思路。