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()
方法关闭了浏览器。
温馨提示:
仅供学习参考,请勿用于数据获取。本案例仅旨在展示数据获取技术的应用和原理,并提供学习参考。请注意,未经授权的数据获取可能涉及法律和道德问题。在进行任何数据获取活动之前,请确保遵守相关法律法规和网站的规定。