PuppeteerSharp简单配置使用
南风 2022-08-15 18:08 386

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,这个需要您自己研究如何做。

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

本网站提供的文章除原创外均转载自其他网站,本网站只为更好的记录及学习技术经验
若网站内转载的文章侵犯了您的版权,请通过 意见反馈 告知本网站,我们会尽快删除相关信息
Copyright©2021-2021 kcBlog博客 版权所有 粤ICP备2021119076号 v1.0.0 栈谷统计