使用這兩個組件,.NET 網(wǎng)頁截圖就這么簡單
前段時間有個需求,需要實現(xiàn)打開某個頁面,在修改頁面前截取圖片保存留底。在github找了兩個開源軟件方案,一個是PuppeteerSharp另外一個是Selenium.WebDriver。兩者都是可以實現(xiàn)無頭模式的網(wǎng)頁抓取工具,使用也非常簡單。下面介紹這兩個開源的組件以及他們抓取圖片的案例。
1、PuppeteerSharp
PuppeteerSharp 是一個用于在 .NET 平臺上控制無頭(Headless) Chrome 瀏覽器的庫。它允許開發(fā)者通過編程方式模擬瀏覽器行為,執(zhí)行網(wǎng)頁操作,截取網(wǎng)頁截圖,獲取網(wǎng)頁內(nèi)容,可以把網(wǎng)頁轉(zhuǎn)換成PDF等等。PuppeteerSharp 是 Puppeteer 在 .NET 環(huán)境中的等效實現(xiàn),Puppeteer 是由 Google 提供的一個用于控制無界面瀏覽器 Chrome 的工具。
抓取網(wǎng)頁圖片案例
具體大家可以參考github地址的官方使用說明。 github地址:github.com/hardkoded/puppeteer-sharp//初始化瀏覽器await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultChromiumRevision);var browser = await Puppeteer.LaunchAsync(new LaunchOptions{Headless = true//是否隱藏瀏覽器,true為隱藏});// 創(chuàng)建一個頁面對象var page = await browser.NewPageAsync();// 導(dǎo)航到指定的URLawait page.GoToAsync("https://www.baidu.com");//截圖 FullPage是全屏await page.ScreenshotAsync("test001.png",new ScreenshotOptions() { FullPage=true });
2、Selenium.WebDriver
Selenium.WebDriver 是一個用于自動化瀏覽器操作的 .NET 庫,它提供了一組 API,允許開發(fā)者模擬用戶在瀏覽器中的行為,從而進(jìn)行自動化測試、數(shù)據(jù)抓取、網(wǎng)頁操作等操作。Selenium 是一個廣泛使用的工具,用于自動化瀏覽器操作和測試,而 Selenium.WebDriver 是其在 .NET 平臺上的一個實現(xiàn)。同時Selenium.WebDriver也支持無頭模式。
抓取網(wǎng)頁圖片案例
具體大家可以參考githu b 地址的官方使用說明 。 github地址:github.com/SeleniumHQ/seleniumpublic void WebDriverGetPic(){// 初始化 ChromeDrivervar chromeOptions = new ChromeOptions();chromeOptions.AddArgument("--headless"); // 使用無頭模式,即不顯示瀏覽器界面string currentDirectory = Environment.CurrentDirectory+ "\\selenium-manager\\windows\\";chromeOptions.BinaryLocation = "selenium-manager.exe";using (var driver = new ChromeDriver(chromeOptions)){// 要截取的網(wǎng)頁的 URLvar url = "https://www.baidu.com"; // 替換為你想要截取的網(wǎng)頁的 URL
// 打開網(wǎng)頁driver.Navigate().GoToUrl(url);
// 等待網(wǎng)頁加載完成System.Threading.Thread.Sleep(5000); // 這里等待 5 秒,你可以根據(jù)實際情況調(diào)整等待時間
// 截取整個網(wǎng)頁的截圖var screenshot = ((ITakesScreenshot)driver).GetScreenshot();
// 保存截圖為文件screenshot.SaveAsFile("screenshot.png", ScreenshotImageFormat.Png);}}
結(jié)語
本文介紹了兩種截圖的.NET庫,在使用上他們都依賴Chrome瀏覽器包,都支持無頭瀏覽。功能上來說PuppeteerSharp側(cè)重網(wǎng)頁內(nèi)容的處理,而Selenium.WebDriver側(cè)重于自動化測試。缺點是依賴瀏覽器。 大家用過那些.NET的網(wǎng)也截圖庫,最好不依賴瀏覽器的庫,歡迎大家在文章下方留言和吐槽,共同分析和討論.NET的網(wǎng)也截圖這個話題。版權(quán)聲明:本文來源于網(wǎng)友收集或網(wǎng)友供稿,僅供學(xué)習(xí)交流之用,如果有侵權(quán),請轉(zhuǎn)告小編或者留言,本公眾號立即刪除。
關(guān)注公眾號↑↑↑:DotNet開發(fā)跳槽?
點 分 享
點 收 藏
點 點 贊
點在看
