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解析模块(ConfigParser)使用方法
Dec 10 Python
Python使用代理抓取网站图片(多线程)
Mar 14 Python
Python实现的tab文件操作类分享
Nov 20 Python
python用10行代码实现对黄色图片的检测功能
Aug 10 Python
django实现登录时候输入密码错误5次锁定用户十分钟
Nov 05 Python
python中实现数组和列表读取一列的方法
Apr 03 Python
Python函数any()和all()的用法及区别介绍
Sep 14 Python
python微信好友数据分析详解
Nov 19 Python
Python用字典构建多级菜单功能
Jul 11 Python
python实现电子书翻页小程序
Jul 23 Python
pytest中文文档之编写断言
Sep 12 Python
使用Python通过企业微信应用给企业成员发消息
Apr 18 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
山进SANGEAN ATS-909X电路分析
2021/03/02 无线电
PHP中的array数组类型分析说明
2010/07/27 PHP
浅析php单例模式
2014/11/25 PHP
php语言中使用json的技巧及json的实现代码详解
2015/10/27 PHP
javascript 简单高效判断数据类型 系列函数 By shawl.qiu
2007/03/06 Javascript
解决AJAX中跨域访问出现'没有权限'的错误
2008/08/20 Javascript
javascript 自定义事件初探
2009/08/21 Javascript
jquery 1.4.2发布!主要是性能与API
2010/02/25 Javascript
基于jQuery的history历史记录插件
2010/12/11 Javascript
深入Javascript函数、递归与闭包(执行环境、变量对象与作用域链)使用详解
2013/05/08 Javascript
JSF中confirm弹出框的用法示例介绍
2014/01/07 Javascript
JavaScript DOM元素尺寸和位置
2015/04/13 Javascript
zTree实现节点修改的实时刷新功能
2017/03/20 Javascript
jQuery扇形定时器插件pietimer使用方法详解
2017/07/18 jQuery
Vue修改mint-ui默认样式的方法
2018/02/03 Javascript
vue操作下拉选择器获取选择的数据的id方法
2018/08/24 Javascript
mocha的时序规则讲解
2019/02/16 Javascript
nodejs文件夹深层复制功能
2019/09/03 NodeJs
解决vant中 tab栏遇到的坑 van-tabs
2020/11/04 Javascript
VTK与Python实现机械臂三维模型可视化详解
2017/12/13 Python
Python贪心算法实例小结
2018/04/22 Python
Django处理文件上传File Uploads的实例
2018/05/28 Python
Python干货:分享Python绘制六种可视化图表
2018/08/27 Python
Django框架 Pagination分页实现代码实例
2019/09/04 Python
py-charm延长试用期限实例
2019/12/22 Python
简单了解Java Netty Reactor三种线程模型
2020/04/26 Python
python退出循环的方法
2020/06/18 Python
Right-on官方网站:日本知名的休闲服装品牌
2019/07/12 全球购物
美国领先的宠物用品和宠物食品零售商:Petco
2020/10/28 全球购物
教育学专业毕业生的自我鉴定
2013/11/26 职场文书
管理部部长岗位职责
2013/12/05 职场文书
2014年中秋寄语
2014/08/11 职场文书
原告离婚代理词
2015/05/23 职场文书
2016十一国庆节感言
2015/12/09 职场文书
Django展示可视化图表的多种方式
2021/04/08 Python
使用kubeadm命令行工具创建kubernetes集群
2022/03/31 Servers