selenium設置無頭瀏覽器
背景
? 我們之前的selenium都是瀏覽器驅動自動打開一個網頁,執行相關操作,其實也可以讓其后臺顯示,不用在前臺顯示。
? 要設置無頭瀏覽器,可以使用Selenium的Headless模式。在Headless模式下,Selenium會在后臺運行瀏覽器,而不會顯示實際的瀏覽器窗口。
優點:
無頭瀏覽器(Headless Browser)是指在沒有圖形用戶界面(GUI)的情況下運行的瀏覽器。它能夠執行和顯示網頁,但不會顯示實際的瀏覽器窗口。
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
# 創建ChromeOptions對象
chrome_options = Options()
# 在ChromeOptions中設置無頭模式
chrome_options.add_argument("--headless")
# 實例化Chrome瀏覽器對象,并將ChromeOptions對象傳遞給它
driver = webdriver.Chrome(options=chrome_options)
# 在無頭瀏覽器中執行相關操作
driver.get("https://www.example.com")
# 進行其他操作...
# 關閉瀏覽器
driver.quit()
案例:
實戰案例一:
? 要求:使用無頭瀏覽器訪問百度,然后截個圖保存到本地
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import time# 創建一個參數對象,用來控制chrome以無界面模式打開
chrome_options = Options()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-gpu')
# 驅動路徑
path = './chromedriver.exe'
# 創建瀏覽器對象
browser = webdriver.Chrome(executable_path=path,options=chrome_options)# 上網
url = 'http://www.baidu.com/'
browser.get(url)
time.sleep(3)
# 截圖 看個結果
browser.save_screenshot('baidu.png')browser.quit()
實戰案例二:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options# 驅動路徑
path = r'D:\Downloads\xx\chromedriver-win64\chromedriver.exe'# 創建一個參數對象,用來控制Chrome以無界面模式打開
chrome_options = Options()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-gpu')# 創建瀏覽器對象
browser = webdriver.Chrome(executable_path=path, options=chrome_options)# 打開網頁
url = 'http://www.baidu.com'
browser.get(url)# 定位元素并執行操作
search_input = browser.find_element_by_id('kw') # 根據ID定位搜索輸入框
search_input.send_keys('Hello, World!') # 在搜索輸入框中輸入文本search_button = browser.find_element_by_id('su') # 根據ID定位搜索按鈕
search_button.click() # 點擊搜索按鈕# 等待頁面加載
browser.implicitly_wait(5) # 隱式等待5秒鐘# 獲取搜索結果
results = browser.find_elements_by_css_selector('.result') # 根據CSS選擇器定位搜索結果
for result in results:print(result.text) # 打印搜索結果的文本內容# 關閉瀏覽器
browser.quit()
? 首先創建了一個參數對象chrome_options
,用來控制Chrome以無界面模式打開。然后使用webdriver.Chrome()
方法創建了一個Chrome瀏覽器對象,并傳入驅動路徑和參數對象。接下來,使用get()
方法打開了百度的網頁。然后使用find_element_by_*
方法定位了搜索輸入框和搜索按鈕,并執行了相應的操作。在搜索結果的部分,使用find_elements_by_css_selector()
方法定位了所有的搜索結果,并通過循環打印了每個搜索結果的文本內容。最后使用quit()
方法關閉了瀏覽器。
溫馨提示:
僅供學習參考,請勿用于數據獲取。本案例僅旨在展示數據獲取技術的應用和原理,并提供學習參考。請注意,未經授權的數據獲取可能涉及法律和道德問題。在進行任何數據獲取活動之前,請確保遵守相關法律法規和網站的規定。