python+selenium+Chrome options参数的使用


Posted in Python onMarch 18, 2020

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

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

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

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

针对编码格式的操作

# 设置默认编码为 utf-8
from selenium import webdriver
options = webdriver.ChromeOptions()
options.add_argument('lang=zh_CN.UTF-8')
driver = webdriver.Chrome(chrome_options = options)

针对UA请求头的操作

# 设置请求头为huaweiMeta10 Pro
from selenium import webdriver
options = webdriver.ChromeOptions()
options.add_argument('User-Agent=Mozilla/5.0 (Linux; U; Android 8.1.0; zh-cn; BLA-AL00 Build/HUAWEIBLA-AL00) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.132 MQQBrowser/8.9 Mobile Safari/537.36')
options.add_argument('--headless') # 浏览器不提供可视化页面
driver = webdriver.Chrome(chrome_options = options)

http://www.fynas.com/ua

针对禁止加载图片的操作

# 设置浏览器禁止加载图片
from selenium import webdriver
options = webdriver.ChromeOptions()
prefs = {"profile.managed_default_content_settings.images": 2}
options.add_experimental_option("prefs", prefs)
driver = webdriver.Chrome(chrome_options = options)

针对IP代理的操作

特别需要注意,在选择代理时,尽量选择静态IP,才能提升爬取的稳定性。如果使用动态匿名IP,每个IP的存活时间是很短的。

# 设置无账号密码的代理
chromeOptions = webdriver.ChromeOptions()
chromeOptions.add_argument('--proxy-server=http://ip:port') 
driver = webdriver.Chrome(chrome_options=chromeOptions)
# 设置有账号密码的代理
proxyauth_plugin_path = create_proxyauth_extension(
   proxy_host='host',
   proxy_port='port',
   proxy_username="username",
   proxy_password="password"
  )
options.add_extension(proxyauth_plugin_path)

查看IP地址的链接:http://httpbin.org/ip

针对添加插件的操作

# 添加xpath helper应用

from selenium import webdriver
chrome_options = webdriver.ChromeOptions()

# 设置好应用扩展
extension_path = 'your file_path'
chrome_options.add_extension(extension_path)

针对登录时关闭弹出的密码保存提示框

from selenium import webdriver 
from selenium.webdriver.common.by import By
options = webdriver.ChromeOptions() 
prefs = {} 
# 设置这两个参数就可以避免密码提示框的弹出
prefs[“credentials_enable_service”] = False 
prefs[“profile.password_manager_enabled”] = False 
options.add_experimental_option(“prefs”, prefs) 
browser = webdriver.Chrome(chrome_options=options) 
browser.get('https://www.baidu.com/')
browser.quit()

其它配置

options.add_argument('--disable-infobars') # 禁止策略化
options.add_argument('--no-sandbox') # 解决DevToolsActivePort文件不存在的报错
options.add_argument('window-size=1920x3000') # 指定浏览器分辨率
options.add_argument('--disable-gpu') # 谷歌文档提到需要加上这个属性来规避bug
options.add_argument('--incognito') # 隐身模式(无痕模式)
options.add_argument('--disable-javascript') # 禁用javascript
options.add_argument('--start-maximized') # 最大化运行(全屏窗口),不设置,取元素会报错
options.add_argument('--disable-infobars') # 禁用浏览器正在被自动化程序控制的提示
options.add_argument('--hide-scrollbars') # 隐藏滚动条, 应对一些特殊页面
options.add_argument('blink-settings=imagesEnabled=false') # 不加载图片, 提升速度
options.add_argument('--headless') # 浏览器不提供可视化页面. linux下如果系统不支持可视化不加这条会启动失败
options.binary_location = r"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" # 手动指定使用的浏览器位置

更多插件操作请参考:https://3water.com/article/182967.htm

到此这篇关于python+selenium+Chrome options参数的使用的文章就介绍到这了,更多相关selenium Chrome options参数 内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python使用rsa加密算法模块模拟新浪微博登录
Jan 22 Python
举例讲解Python面相对象编程中对象的属性与类的方法
Jan 19 Python
浅谈python中的getattr函数 hasattr函数
Jun 14 Python
详解Python中contextlib上下文管理模块的用法
Jun 28 Python
python实现连连看辅助(图像识别)
Mar 25 Python
python如何使用jt400.jar包代码实例
Dec 20 Python
python requests模拟登陆github的实现方法
Dec 26 Python
python标准库sys和OS的函数使用方法与实例详解
Feb 12 Python
Python3读取和写入excel表格数据的示例代码
Jun 09 Python
Django前后端分离csrf token获取方式
Dec 25 Python
python实现不同数据库间数据同步功能
Feb 25 Python
Python数据处理的三个实用技巧分享
Apr 01 Python
selenium WebDriverWait类等待机制的实现
Mar 18 #Python
Python socket处理client连接过程解析
Mar 18 #Python
python selenium自动化测试框架搭建的方法步骤
Jun 14 #Python
Python如何使用paramiko模块连接linux
Mar 18 #Python
Python selenium页面加载慢超时的解决方案
Mar 18 #Python
Python Selenium 设置元素等待的三种方式
Mar 18 #Python
Python多线程threading join和守护线程setDeamon原理详解
Mar 18 #Python
You might like
PHP中的string类型使用说明
2010/07/27 PHP
javascript,php获取函数参数对象的代码
2011/02/03 PHP
php常用Stream函数集介绍
2013/06/24 PHP
C#静态方法与非静态方法实例分析
2014/09/22 PHP
Symfony2框架学习笔记之表单用法详解
2016/03/18 PHP
深入理解PHP类的自动载入机制
2016/09/16 PHP
PHP随机生成中文段落示例【测试网站内容时使用】
2020/04/26 PHP
如何使用Javascript获取距今n天前的日期
2013/07/08 Javascript
Jquery的each里用return true或false代替break或continue
2014/05/21 Javascript
Javascript获取CSS伪元素属性的实现代码
2014/09/28 Javascript
jQuery获取标签文本内容和html内容的方法
2015/03/27 Javascript
jQuery选择器源码解读(八):addCombinator函数
2015/03/31 Javascript
javascript中获取class的简单实现
2016/07/12 Javascript
AngularJS教程之环境设置
2016/08/16 Javascript
详解nodeJS中读写文件方法的区别
2017/03/06 NodeJs
vue生成token并保存到本地存储中
2018/07/17 Javascript
使用PreloadJS加载图片资源的基础方法详解
2020/02/03 Javascript
何时/使用 Vue3 render 函数的教程详解
2020/07/25 Javascript
Python跳出循环语句continue与break的区别
2014/08/25 Python
如何使用python爬取csdn博客访问量
2016/02/14 Python
python3+PyQt5泛型委托详解
2018/04/24 Python
Python实现的多进程和多线程功能示例
2018/05/29 Python
Django 数据库同步操作技巧详解
2019/07/19 Python
python tornado使用流生成图片的例子
2019/11/18 Python
将python文件打包exe独立运行程序方法详解
2020/02/12 Python
关于HTML5你必须知道的28个新特性,新技巧以及新技术
2012/05/28 HTML / CSS
使用HTML5做个画图板的方法介绍
2013/05/03 HTML / CSS
仓库管理制度
2014/01/21 职场文书
汉语言文学职业规划
2014/02/14 职场文书
国庆宣传标语
2014/06/30 职场文书
流动人口婚育证明范本
2014/09/26 职场文书
先进典型事迹材料
2014/12/29 职场文书
校园环境卫生倡议书
2015/04/29 职场文书
社会实践心得体会范文
2016/01/14 职场文书
浅谈vue2的$refs在vue3组合式API中的替代方法
2021/04/18 Vue.js
浅谈MySQL中的六种日志
2022/03/23 MySQL