Install NuGet package-PuppeteerSharp
Install-Package PuppeteerSharp
Create a console program.
new method
class Program { static void Main(string[] args) { Console.WriteLine("Hello World!"); CreateHtmlImg(); Console.ReadLine(); } static async void CreateHtmlImg() { // The first time the program is executed, a chrome program will be downloaded first. After the download is complete, there is no need to download it next time. await new BrowserFetcher (). DownloadAsync (BrowserFetcher.DefaultRevision); using (Browser browser = await Puppeteer.LaunchAsync(new LaunchOptions { Headless = true })) { using (var page = await browser.NewPageAsync()) { // Set the page size of the browser 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(); // Analyze the source code sr.Close (); // Save the page as a picture 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); } } // Save the page as a picture // await page.ScreenshotAsync (@ "D: \ junk \" + DateTime.Now.ToString ("yyyyMMddHHmmssssss") + ". Png ", // new ScreenshotOptions () {FullPage = true, Type = ScreenshotType.Png}; } } } }
The first execution will be slower, to download Chrome, 330M