zoukankan      html  css  js  c++  java
  • .NET 利用PuppeteerSharp生成页面图片

    安装 NuGet 程序包 - PuppeteerSharp

    Install-Package PuppeteerSharp
    

    创建个控制台程序。

    新方法

    class Program
        {
            static void Main(string[] args)
            {
                Console.WriteLine("Hello World!");
    
                CreateHtmlImg();
    
                Console.ReadLine();
            }
            static async void CreateHtmlImg()
            {
                //  首次 执行程序 会先下载一个 chrome 程序 , 下载完成后下次就不用下载。
                await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultRevision);
    
                using (Browser browser = await Puppeteer.LaunchAsync(new LaunchOptions { Headless = true }))
                {
                    using (var page = await browser.NewPageAsync())
                    {
                        //设置浏览器的页面大小
                        await page.SetViewportAsync(new ViewPortOptions
                        {
                            Width = 1024,
                            Height = 768
                        });
                        string url = "https://www.cnblogs.com/";
                        await page.GoToAsync(url);
    
                        // 可执行javasctipt
                        //var seven = await page.EvaluateFunctionAsync<int>("()=> 4 + 3");
                        //var someObject = await page.EvaluateFunctionAsync<dynamic>("(value) => ({a: value})", 5);
    
    
                        var html = await page.GetContentAsync();
    
                        var sourceFile = "";
                        var memoryStream = new MemoryStream(Encoding.Default.GetBytes(html));
                        var sr = new StreamReader(memoryStream);
                        sourceFile = sr.ReadToEnd();
    
                        //针对源代码进行分析
                        sr.Close();
    
                        //将页面保存为图片
                        using (var stream = await page.ScreenshotStreamAsync(new ScreenshotOptions { FullPage = false }))
                        {
    
                            byte[] srcBuf = new Byte[stream.Length];
                            stream.Read(srcBuf, 0, srcBuf.Length);
                            stream.Seek(0, SeekOrigin.Begin);
                            using (FileStream fs = new FileStream(@"D:垃圾"+ DateTime.Now.ToString("yyyyMMddHHmmsssss") +".png",FileMode.Create, FileAccess.Write))
                            {
                                fs.Write(srcBuf, 0, srcBuf.Length);
                            }
                        }
                        //将页面保存为图片
                        //await page.ScreenshotAsync(@"D:垃圾"+ DateTime.Now.ToString("yyyyMMddHHmmsssss") +".png",
                        //new ScreenshotOptions() { FullPage = true, Type = ScreenshotType.Png };
                    }
                }
            }
        }

    首次执行会比较慢,要下载 Chrome ,330M

  • 相关阅读:
    1.时间复杂度与空间复杂度分析
    数据结构与算法之重头再来
    MySQL时间字段与业务代码取出的时间不一致问题
    [redtiger]在线靶场level3
    win10 卡顿 MsMpEng.exe进程
    react 笔记 局部打印 print
    react table td 自动换行
    kali apt-get update release文件过期
    ubuntu怎么切换到root用户,切换到root账号方法
    winscp连接kali 使用预置密码验证 拒绝访问
  • 原文地址:https://www.cnblogs.com/ya-jun/p/12738397.html
Copyright © 2011-2022 走看看