PuppeteerSharp入坑記


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);
        }
    }
}
View Code

 

掉坑

當執行到以下這行代碼時,會從網絡上下載瀏覽器便捷式安裝包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,這個需要您自己研究如何做。

 最后希望可以給到正在爬此坑的猿們一些思路。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM