「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 官網

留言

這個網誌中的熱門文章

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

「綠界(Ecpay)」金流介接教學

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

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

使用「Line-Notify」發送 line 訊息

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

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

使用 Visual Studio 2019 實作「RESTful API」