「Chrome Headless」隱藏瀏覽器的介面,讓爬蟲程式偷偷的執行

一、介紹

延伸之前的 Selenium 的文章,此篇將介紹如何使用 Chrome Headless 搭配 Selenium 的 Hide Command,讓爬蟲程式在看不到的情況下執行。

二、Nuget 套件

  1. Selenium.WebDriver
  2. Selenium.WebDriver.ChromeDriver

三、教學步驟

圖一、安裝 Selenium 套件

圖二、貼上範例程式
//Chrome headless 參數設定
var chromeOptions = new ChromeOptions();
chromeOptions.AddArguments("headless");

//啟用 Selenium Hide Command 
var driverService = ChromeDriverService.CreateDefaultService();
driverService.HideCommandPromptWindow = true;

//建置 Chrome Driver
var driver = new ChromeDriver(driverService, chromeOptions);

//瀏覽器 轉址至 Google圖片
driver.Url = @"https://www.google.com.tw/imghp?hl=zh-TW";

//輸入關鍵字 "Selenium"
var searchInput = driver.FindElementByCssSelector(@".gLFyf");
searchInput.SendKeys("Selenium");

//按下 Enter
searchInput.SendKeys(OpenQA.Selenium.Keys.Enter);

//抓取圖片清單
var imgTags = driver.FindElementsByTagName("img").ToList();

//取得 5張 jpeg 圖片
var images = imgTags.Select(x => x.GetAttribute("src")).Where(x => x != null && x.StartsWith("data:image/jpeg;base64,")).Take(5).ToList();

//下載圖片
foreach (var image in images)
{
    byte[] bytes = Convert.FromBase64String(image.Replace("data:image/jpeg;base64,", ""));
    using (var ms = new MemoryStream(bytes))
    using (var jpg = Image.FromStream(ms))
    {
        jpg.Save($@"{Guid.NewGuid().ToString().Replace("-", "")}.jpg", ImageFormat.Jpeg);
    }
}

//瀏覽器 關閉
driver.Close();

//結束 driver
driver.Quit();
如下畫面

圖三、建置後原始碼後執行。

圖四、執行結果

四、相關連結

  1. Selenium 前端 UI 自動化測試、爬蟲程式 最佳利器
  2. Katalon Recorder 簡化測試腳本撰寫的工具

五、參考

  1. Selenium 官網

留言

這個網誌中的熱門文章

使用「LINE Messaging API」發送 line 訊息

使用「NLog」來記錄應用程式的大小事吧

如何傳送訊息至「Teams」的 Channel

「Katalon Recorder」簡化測試腳本撰寫的工具

「Selenium」前端 UI 自動化測試、爬蟲程式 最佳利器

使用 Visual Studio 2019 實作「RESTful API」

使用「ADO.NET」 進行資料庫的讀取、新增、修改、刪除的操作

好用的資料庫管理工具「SQL Server 資料庫專案」