爬虫工具之selenium(四)-Chrome Options参数

本文介绍了如何利用Selenium的Chrome Options配置无头浏览器,包括禁止图片加载、设置代理、模拟移动设备、添加扩展及处理编码问题,以提升爬虫效率并避免反爬策略。

这一章学习Chrome Options,主要参考

Chrome Options是一个配置chrome启动时属性的类,通过这个参数我们可以为Chrome添加如下参数:

  • 设置 chrome 二进制文件位置 (binary_location)
  • 添加启动参数 (add_argument)
  • 添加扩展应用 (add_extension, add_encoded_extension)
  • 添加实验性质的设置参数 (add_experimental_option)
  • 设置调试器地址 (debugger_address

Chrome Options常用的行为一般有以下几种:

  • 禁止图片和视频的加载:提升网页加载速度
  • 添加代理:用于翻墙访问某些页面,或者应对IP访问频率限制的反爬技术
  • 使用移动头:访问移动端的站点(一般这种站点的反爬技术比较薄弱)
  • 添加扩展:像正常使用浏览器一样的功能
  • 设置编码:应对中文站,防止乱码
  • 阻止JavaScript执行
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

# 实例化一个启动参数对象
chrome_options = Options()
# 使用add_argument()方法添加启动参数
chrome_options.add_argument('--window-size=1366,768')
# 在初始化Webdriver对象时将参数对象传入Chrome(实现以特定参数启动),则启动了一个设置了窗口大小的Chrome
browser = webdriver.Chrome(chrome_options=chrome_options)
browser.get('https://www.douban.com')

提示信息:
G:\python\work\cankao>python 0317.py
0317.py:9: DeprecationWarning: use options instead of chrome_options
browser = webdriver.Chrome(chrome_options=chrome_options)

DevTools listening on ws://127.0.0.1:49421/devtools/browser/fe4bb06c-22f6-4c21-b647-f8a8a0816d56

第一个提示的意思是将“browser = webdriver.Chrome(chrome_options=chrome_options)”中的参数“chrome_options”修改为“options”
第二个提示“开发工具正在侦听……”不影响程序运行,参考资料,增加一行代码即可

修改后的代码如下:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

# 实例化一个启动参数对象
chrome_options = Options()
#增加以防止出现“DevTools listening on ws://127.0.0.1……”的提示
chrome_options.add_experimental_option('excludeSwitches', ['enable-logging'])
# 使用add_argument()方法添加启动参数
chrome_options.add_argument('--window-size=1366,768')
# 在初始化Webdriver对象时将参数对象传入Chrome(实现以特定参数启动),则启动了一个设置了窗口大小的Chrome
browser = webdriver.Chrome(options=chrome_options)
browser.get('https://www.douban.com')

启动参数主要有:
一、设置浏览器以无界面方式运行

#设置浏览器以无界面方式运行
chrome_options.add_argument('--headless')
#或者:
chrome_options.headless=True

二、禁用图片

#禁用图片加载参数设置(在headless模式下也生效)
chrome_options.add_argument('blink-settings=imagesEnabled=false')
#或者:
prefs = {"profile.managed_default_content_settings.images": 2}
chrome_options.add_experimental_option("prefs", prefs)

三、修改User-Agent

#修改User-Agent
chrome_options.add_argument('user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.193 Safari/537.36')

四、设置编码格式

# 设置默认编码为 utf-8
chrome_options.add_argument('lang=zh_CN.UTF-8')

五、代理ip设置
同一个IP反复爬取同一个网站很有可能被封,因此建议建立代理ip池循环使用,降低被禁几率

<think>好的,我现在需要回答用户关于Selenium中Option对象属性及其配置的问题。首先,用户提到的引用内容涉及ChromeOptions类、Selenium的基本介绍、如何避免检测、两种配置写法以及窗口切换的例子。用户希望详细了解Option对象的属性和配置方法。 首先,我应该先明确Selenium中的Option对象通常指的是浏览器选项,比如ChromeOptions、FirefoxOptions等。这些类用于配置浏览器驱动程序的参数,比如设置无头模式、禁用扩展、添加用户代理等。根据引用[1]提到ChromeOptions类用于操作Chrome驱动程序的属性,这应该是核心部分。 接下来,需要整理常见的属性配置方法。比如设置无头模式,用户代理,窗口大小,禁用自动化提示,实验性选项,排除Switches,添加扩展,调试端口等。每个属性都需要给出对应的代码示例,说明如何使用。 然后,考虑用户可能遇到的问题,比如如何避免被检测到自动化工具。引用[3]提到通过清除特征信息,比如排除“enable-automation”和禁用自动化扩展。这部分需要详细说明如何配置这些参数。 另外,引用[4]提到了两种配置写法,一种是chrome_options参数,另一种是options参数。需要指出新版本推荐使用options参数,并给出示例。 还要注意引用[5]中的窗口切换例子,虽然与Options无直接关系,但可能在配置浏览器时需要处理多窗口的情况,不过这可能属于其他部分,暂时可以不涉及。 然后,需要确保回答结构清晰,分点列出属性及其用法,每个属性有代码示例。同时,根据用户要求,生成相关问题,比如如何绕过检测、无头模式应用场景等。 最后,检查是否覆盖了所有引用内容,并正确添加引用标识。确保使用中文回答,数学公式正确应用,但问题中可能不涉及数学内容,所以主要关注代码和配置的准确性。</think>### SeleniumChromeOptions属性及配置详解 ChromeOptionsSelenium WebDriver中用于定制Chrome浏览器行为的关键类,通过它可以实现浏览器特征修改、调试参数设置和反检测等功能。以下是核心属性配置方法: --- #### 一、基础配置属性 1. **无头模式设置** 适用于无需可视化界面的自动化场景(如服务器环境): ```python from selenium import webdriver options = webdriver.ChromeOptions() options.add_argument('--headless=new') # Chrome 112+新版无头模式 driver = webdriver.Chrome(options=options) ``` [^3] 2. **窗口尺寸控制** 控制初始窗口尺寸避免元素定位异常: ```python options.add_argument('--window-size=1920x1080') ``` 3. **用户代理伪装** ```python options.add_argument('--user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36') ``` --- #### 二、反检测关键配置 1. **禁用自动化提示栏** ```python options.add_experimental_option("excludeSwitches", ["enable-automation"]) options.add_experimental_option('useAutomationExtension', False) ``` 2. **覆盖WebDriver参数** 通过CDP协议覆盖navigator.webdriver属性: ```python driver.execute_cdp_cmd('Page.addScriptToEvaluateOnNewDocument', { 'source': 'Object.defineProperty(navigator, "webdriver", {get: () => undefined})' }) ``` --- #### 三、进阶功能配置 1. **扩展程序管理** ```python # 加载本地扩展 options.add_extension('/path/to/extension.crx') # 禁用所有扩展 options.add_argument('--disable-extensions') ``` 2. **沙箱与安全策略** ```python options.add_argument('--no-sandbox') # 容器环境必备参数 options.add_argument('--disable-dev-shm-usage') # 解决内存不足问题 ``` 3. **调试端口开启** ```python options.debugger_address = "127.0.0.1:9222" # 连接已打开浏览器 ``` --- #### 、新版参数写法(推荐) ```python # 新版Selenium推荐使用options参数 driver = webdriver.Chrome(options=options) # 替代旧版chrome_options参数[^4] ``` ---
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值