「Chrome Headless」隱藏瀏覽器的介面,讓爬蟲程式偷偷的執行
一、介紹
延伸之前的 Selenium 的文章,此篇將介紹如何使用 Chrome Headless 搭配 Selenium 的 Hide Command,讓爬蟲程式在看不到的情況下執行。
二、Nuget 套件
- Selenium.WebDriver
- Selenium.WebDriver.ChromeDriver
三、教學步驟
圖二、貼上範例程式
//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();
留言
張貼留言